Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Label leri Panel içersinde sıralama
#1
Merhabalar 
bir kaç sorum olacaktı ricam yardımcı olmanız

Yaklaşık 100 adet program çalışırken label üretip bunları panel içersinde sıralamak istiyorum  panelin satırı dolunca aşağıya devam ederek 
labelleri göstersin farklı yöntemlerle yapıyorum yanlız kodlama çok uzuyor ve kontroller e çok zaman harcıyorum 
pratik bir yöntem varmı bir örnekle göstermeniz mümkünmü ?

2 nci sorum ise Tlabel caption içerikleri ekrana yansıttıktan sonra görsel olarak  bir boşluk bırakarak sonraki labeli göstermesini çözemedim.
Açıklamak gerekirse  x:=label1.caption+' '+label2.caption+' '+label3.caption ..........; Gibi 
TLabellerin  onclik olayı var ve captionların içerinde 1 ila 9 adet arasında karekter vardır 
ekranda  "1        999         3       789456999" Gibi gözüküyor benim istediğim ise şu "1 999 3 789456999"

3 üncü sorum ise oluşturulmuş tlabellerden biri ile işim bitince aradan çıkartmak için gizlediğimde yeri boş kalıyor ve görsellik bozuluyor 
 bir sonraki kaybolan labelin yerine gelmesini istiyorum  
öncelikle bunların çözümünden yardımcı olmanızı rica ediyorum Saygılar 
Sağlıcakla kalın 
interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Label1: TLabel;
   Label2: TLabel;
   ListBox1: TListBox;
   procedure FormCreate(Sender: TObject);
   PROCEDURE LCLICK(SENDER:TOBJECT);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 mixX,mixY,MixADI:array [1..99] of string;
 mixrenk: array [1..99] of tcolor;
 i:integer;
 Lbl:tlabel;


implementation

{$R *.dfm}
procedure TFORM1.LClick(Sender: TObject);
begin
ShowMessage('label Adı : '+TLABEL(Sender).name+#13#10+
          'Caption : '+TLABEL(Sender).caption+#13#10+
          'Tag : '+inttostr(TLABEL(Sender).tag)+#13#10+
           'RENK : '+COLORTOSTRING(TLABEL(SENDER).FONT.COLOR)+#13#10+
           '  ne ekliyelim ?'  );
   // TEST hangi bilgileri editliyelim mesela
           (Sender as TLABEL).Caption:='10101010101';
            (Sender as TLABEL).LEFT:=145;
             (Sender as TLABEL).font.COLOR:=Clblack;

           END;
procedure TForm1.FormCreate(Sender: TObject);
begin
{   TEST ------------------
  FOR i:=1 TO 99 DO
  BEGIN
  randomize();
  MiXADI[I]:=inttostr(random(9999999));
  END;
  --------------------------------  }



    LBL:=Tlabel.Create(self);
    LBL.Parent:=Form1.panel1;
   for I := 1 to 99 do
     begin
       LBL.name:='ETI'+inttostr(I);
       randomize;
       LBL.Caption:=inttostr(random(99999999));
       LBL.tag:=I;
       LBL.FONT.COLOR:=StringToColor('clSkyBlue');
       LBL.OnClick:=LClick;
       ListBox1.Items.Add(LBL.NAME) ;
     end;
      // TEST
     // FOR I:=1 TO 99 DO tlabel(LBL).left:=(LBL.LEFT+lbl.Width)+10;
      // ------
END;
    end.
Cevapla
#2
TFlowPanel'i kullanın, 1 ve 3.yü çözecektir.

Şu şekilde yaparsanız 2. sorun zaten hiç olmuyor, Ufak bir değişiklik yaptım, TLabel'lerin OnMouseDown event'ini kullandım. Sol klikte sizin yazdığınız ShowMessage çalışıyor, sağ klik yaptığınızda o label'i görünmez yapıyor. Bunun dışında bir hata var, lbl := TLabel.Create.. 'i döngünün içinde yapmanız gerekir. İkincisi hata değil ama yapılmaması gerekir, lokal değişkenleri globalde tanımlamamalıdır. Yani lbl ve I değişkeni OnCreate event'i içinde olmalıdır.

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    FlowPanel1: TFlowPanel;
    ListBox1: TListBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  lbl : TLabel;
  I : Integer;
begin
   for I := 1 to 99 do
     begin
       LBL:=Tlabel.Create(self);
       LBL.Parent:=FlowPanel1;
       LBL.name:='ETI'+inttostr(I);
       randomize;
       LBL.Caption:=inttostr(random(99999999))+' ';
       LBL.tag:=I;
       LBL.FONT.COLOR:=RGB(Random(255), Random(255), Random(255));
       lbl.OnMouseDown := Label1MouseDown;
       ListBox1.Items.Add(LBL.NAME) ;
     end;
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=TMouseButton.mbLeft then
    ShowMessage('label Adı : '+TLABEL(Sender).name+#13#10+
          'Caption : '+TLABEL(Sender).caption+#13#10+
          'Tag : '+inttostr(TLABEL(Sender).tag)+#13#10+
           'RENK : '+COLORTOSTRING(TLABEL(SENDER).FONT.COLOR)+#13#10+
           '  ne ekliyelim ?'  )
  else
  if Button=TMouseButton.mbRight then
    TLabel(Sender).Visible := False;
end;

end.


Cevapla
#3
Teşekkür ederim. 
Delphi 7 de yıllar önce yazmıştım. Delphi 12 ye geçince de yenilikleri inceleme fırsatım olmamıştı flowpanel i bilmiyordum mesela, bilmediğimden basit usul panel kullanmıştım değiştirince sorun halloldu.
Ayrıca uyarılarınız için teşekkür ederim "lbl := TLabel.Create"  evet doğrudur onunla panel1 dongunun içindeydi zaten test ederken yukarda kalmış 
tekrar teşekkür ederim programda güncelleme yapmaya devam edeceğim soru 4 te görüşmek üzere Smile
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  label creare te caption yazdırma sorunu ercanskose 1 587 12-09-2024, Saat: 11:27
Son Yorum: ercanskose
  Label Alt Satıra Geçme Mericx 11 15.373 12-03-2024, Saat: 22:34
Son Yorum: omer
  Mysql Büyükten Küçüğe Sıralama Sorunu hakanharbeli 8 6.048 26-01-2023, Saat: 10:35
Son Yorum: yhackup
  Panel rengi Husv 3 2.012 20-12-2021, Saat: 20:48
Son Yorum: engerex
  Dbgrid Drag&Drop İle Satır Sıralama TheEAK 6 3.976 18-03-2021, Saat: 14:50
Son Yorum: TheEAK



Konuyu Okuyanlar: 1 Ziyaretçi