Panel üzerindeki paneller

Başlatan z, 06 Mayıs 2013, 03:49:53

z

4 tane büyük panelim var. Her panelin üzerinde de 20 tane küçük panel.

Bu panellere parametrik olarak ulaşmak istiyorum.

Mesela Büyük Panel1 in küçük 1. panelinin caption değerini 1 yap
Mesela Büyük Panel2 in küçük 1. panelinin caption değerini 1 yap gibi.

Bunu nasıl yaparım.

Bugüne kadarki yazdığım programlarda panelleri  vs tasarım aşamasında elimle oluşturuyordum. Artık runtime aşamasında oluşturmak ve yukarıdaki soruna da çözüm bulmak istiyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Salih

#1
Şöyle olabilir.

Büyük panelin içindeki küçük paneller onun alt birimleri oluyor.
Controls özelliği ile alt panellere ulaşabilirsin.
Forma View as Text ile bakarsan. Alt panellerin yazılma sırası var.
Bu sıraya göre 0'dan başlayarak numaranladırılıyorlar

With buyuk_panel.controls[0] as Tpanel Do
  caption := '1';


Run Time oluşturmayı şu şekilde yapabiliriz.

with TPanel.Create(Form1) do
   begin
     Name := 'PanelA';
     Caption := '';
     left := 16;
     top  := 16;
     Visible := True;
     Width := 200;
     Height := 200;
     Parent := Form1;
   end;
   // Alt Panelin ebeveynini PanelA olarak atıyoruz.
   // Burada Form1.controls[0] nesnesinin PanelA olduğunu varsayıyorum
   with TPanel.Create(form1.Controls[0] as Tpanel) do
   begin
     Name := 'Panel0';
     Caption := '';
     left := 16;
     top  := 16;
     Visible := True;
     Width := 50;
     Height := 50;
     Parent := form1.Controls[0] as Tpanel;
   end;

z

O1 15 integer eleman saklayan bir dizi. Aynı şekilde O2, O3 ve O4 de var.

4 büyük panelin adları P1, P2, P3 ve P4

Bu büyük panellerin üzerinde 15 er tane panel var.

Amacım O1 in sakladığı 15 integeri P1 in 15 panelinin caption değerine atamak.
Aynı şekilde O2 değerlerini P2 ye atamak. Benzer şekilde O3 ve O4 değerlerini P3 ve P4  e atamak.

Bu işlemi de uzun uzun if then benzeri yapılarla yapmak istemiyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Salih

Şöyle yapılabilir.

for i:=0 to 14 do
begin
 with  P1.controls[i] as TPanel do
 caption := inttostr(O1[i];
end;