Veritabanından buton bilgisi Çekmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Veritabanından buton bilgisi Çekmek

Mesaj gönderen bkantur »

Herkese iyi çalışmalar dilerim. Form üzerinde 30 adet bitbutonum var ve bunların bilgileri veritabanından çağırılıyor. Alt taraftaki kod bu yüzden bayağı bir uzuyor. Bunu nasıl bir döngüye alıp kod kalabalığından kurtulabilirim.

Kod: Tümünü seç

begin
  with UniQuery1 do
    begin
      close;
      sql.clear;
      sql.add('Select * from hizlibuton');
      open;
      if UniQuery1.RecordCount>0 then
        begin
          UniQuery1.First;
          BitBtn1.Caption  :=  UniQuery1['tus_ismi'];
          BitBtn1.Glyph.LoadFromFile(UniQuery1['tus_resmi']);
          BitBtn1.hint  :=  UniQuery1['tus_barkodu'];
          UniQuery1.next;
          BitBtn2.Caption  :=  UniQuery1['tus_ismi'];
          BitBtn2.Glyph.LoadFromFile(UniQuery1['tus_resmi']);
          BitBtn2.hint  :=  UniQuery1['tus_barkodu'];
          UniQuery1.next;
          BitBtn3.Caption  :=  UniQuery1['tus_ismi'];
          BitBtn3.Glyph.LoadFromFile(UniQuery1['tus_resmi']);
          BitBtn3.hint  :=  UniQuery1['tus_barkodu'];
        end;
    end;
end;
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Veritabanından buton bilgisi Çekmek

Mesaj gönderen mkysoft »

Nesnelerin isimlerini veri tabanında tutabilirseniz direk eşleştirme şansınız olur. Components[] ve FindComponent fonksiyonları işinizi görecektir.
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Re: Veritabanından buton bilgisi Çekmek

Mesaj gönderen me_turan@mynet.com »

ben senin sorununu anladım sanırım. senin merak ettiğin formdaki butonları for döngüsü icine alabilmek tek tek adlarını yazmadan. cok kolay..

Kod: Tümünü seç

for i :=0 to form3.ComponentCount-1 do    /// formdaki componentlerin index numaraları 0 dan başlar.. 
 if form3.Components[i] is TButton then // i ninci komponent bir buton ise.. 
   (Form3.Components[i] as TButton).Caption := 'etiket..';  /// 
formda index numarasını bildigin bir komponentin tüm properties hatta eventslarını değiştirebilirsin..

veri tabanından cekmek icin ise....

Kod: Tümünü seç

for i :=0 to form3.ComponentCount-1 do    /// formdaki componentlerin index numaraları 0 dan başlar.. 
 if form3.Components[i] is TButton then // i ninci komponent bir buton ise.. 
  begin
   Form3.Components[i] as TButton).Caption := UniQuery1['tus_ismi'];  /// 
    UniQuery1.next;
   end;
   
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Re: Veritabanından buton bilgisi Çekmek

Mesaj gönderen bkantur »

çözüme bir hocamın yardımı sayesinde aşağıdaki kodlar ile ulaştım teşekkür ederim.

Kod: Tümünü seç

var
I: Integer;
Buton: TObject;
begin
if UniTable1.RecordCount > 0 then
begin
  UniTable1.First;
  for I := 0 to UniTable1.RecordCount - 1 do
  begin
    Buton := FindComponent('BitBtn' + (i + 1).ToString);
    if Assigned(Buton) and (Buton is TBitBtn) then
    begin
      TBitBtn(Buton).Caption := UniTable1['tus_ismi'];
      TBitBtn(Buton).Glyph.LoadFromFile(UniTable1['tus_resmi']);
      TBitBtn(Buton).hint := UniTable1['tus_barkodu'];
    end;
    UniTable1.next;
  end;
end;
end;
Cevapla