Sayfayı Yazdır | Pencereyi Kapat

İç içe for ile form nesnelerinin kullanımı

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=516
Tarih: 06 Ocak 2025 Saat 12:25
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: İç içe for ile form nesnelerinin kullanımı
Mesajı Yazan: ubakgul
Konu: İç içe for ile form nesnelerinin kullanımı
Mesaj Tarihi: 24 Temmuz 2023 Saat 13:56
Merhaba,

İç içe for döngüsü kullanarak matris oluşturmaya çalışıyorum. Kodlar ve karşılaştığım sorunlar aşağıdaki gibidir. 
Matriste alt satıra geçmek için satirLyt kullandım. Sütunları oluşturmak için satirLyt içine sutunLyt ekledim. SutunLyt içine butonları ekliyorum. Resimlerde görüldüğü gibi sütunda ve satırda ilk değeri yazdıktan sonra son değerden başlayarak buton ekliyor. Bu sorun nasıl düzeltilebilir? 
sutunLyt ve alanBtn eklerken içine eklediğim alanların isimleri (satirLyt ve sutunLyt), i ve j değerleriyle birlikte değişebilirse sorunun çözülebileceğini düşünüyorum. Bu form değişkenlerinin i ve j ile birlikte kullanımı var mı, varsa nasıl kullanabilirim?

      

var
  MyForm:TclForm;
  satirLyt,sutunLyt:TClLayout;
  arkaPnl,p1:TCLPanel;
  alanBtn: TCLButton;
  i,j:Integer;

begin
  MyForm := TclForm.Create(Self);
  
  arkaPnl:=MyForm.AddNewProPanel(MyForm,'arkaPnl');
  clComponent.SetupComponent(arkaPnl,'{"Align" : "Client","BackgroundColor":"#EEE8AA"}');
  
  p1:=MyForm.AddNewProPanel(arkaPnl,'p1');
  clComponent.SetupComponent(p1,'{"Align" : "Client","BackgroundColor":"#EEE8AA"}');
  
  for i:= 0 to 4 do begin 
    satirLyt:=MyForm.AddNewLayout(p1,'satirLyt'+IntToStr(i));
    for j:=0 to 4 do begin
      sutunLyt:=MyForm.AddNewLayout(satirLyt,'sutunLyt'+IntToStr(i)+IntToStr(j));
      sutunLyt.Align:=alleft;
      sutunLyt.Width:=30;
      sutunLyt.Height:=30;
      alanBtn:=MyForm.AddNewProButton(sutunLyt,'alanBtn'+IntToStr(i)+IntToStr(j),IntToStr(j));
      clComponent.SetupComponent(alanBtn,'{"Align" : "left","Width" :50, "Height":50, "BorderColor":"#000000","BorderWidth":1, "BackgroundColor":"#ffffff"}');
    end;
  end;
  
 MyForm.Run;
end;



Cevaplar:
Mesajı Yazan: ztashia
Mesaj Tarihi: 24 Temmuz 2023 Saat 15:47
Merhaba,

Aşağıda ki kodda çözümü bulabilirsiniz.

Yapılan Değişiklikler;
  • Butona tıklandığında hangi butona tıklandığını gösteren event eklendi.
  • Align hataları düzeltildi.

********************************************************************************
var
  MyForm:TclForm;
  satirLyt,sutunLyt:TClLayout;
  arkaPnl,p1:TCLPanel;
  alanBtn: TCLButton;
  i,j:Integer;
  procedure alanBtnOnClick;
  begin
    ShowMessage(TCLButton(MyForm.ClSender).Text);
  end;

begin
  MyForm := TclForm.Create(Self);
  
  arkaPnl:=MyForm.AddNewProPanel(MyForm,'arkaPnl');
  clComponent.SetupComponent(arkaPnl,'{"Align" : "Client","BackgroundColor":"#EEE8AA"}');
  
  p1:=MyForm.AddNewProPanel(arkaPnl,'p1');
  clComponent.SetupComponent(p1,'{"Align" : "Client","BackgroundColor":"#EEE8AA"}');
  
  for i:= 0 to 4 do begin 
    satirLyt:=MyForm.AddNewLayout(p1,'satirLyt'+IntToStr(i));
    satirLyt.Align:=alMostTop;
    for j:=0 to 4 do begin
      sutunLyt:=MyForm.AddNewLayout(satirLyt,'sutunLyt'+IntToStr(i)+IntToStr(j));
      sutunLyt.Align:=alMostleft;
      sutunLyt.Width:=30;
      sutunLyt.Height:=30;
      alanBtn:=MyForm.AddNewProButton(sutunLyt,'alanBtn'+IntToStr(i)+IntToStr(j),IntToStr(I)+' - '+IntToStr(j));
      clComponent.SetupComponent(alanBtn,'{"Align" : "client","Width" :50, "Height":50, "BorderColor":"#000000","BorderWidth":1, "BackgroundColor":"#ffffff"}');
      MyForm.AddNewEvent(alanBtn,tbeOnClick,'alanBtnOnClick');
    end;
  end;
  
 MyForm.Run;
end;
********************************************************************************

İyi Günler.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net