Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TButtonGroup Hakkında
#1
Aşağıdaki kod ile veritabanındaki kayıtlara göre buttongroup üzerinde buton oluşturuyorum. Sorunum bu butona tıkladığım zaman oluşturulan butona vermiş olduğum captionı alıp işlem yapmam gerekiyor. Ama nasıl alabileceğimi bulamadım. YArdımcı olacak olan hocalarıma ve arkadaşlarıma şimdiden teşekkür ederim.
With FDQuery1 do
 begin
   close;
   sql.clear;
   sql.add('SELECT id,shiftsure FROM pdks_shiftsure');
   open;
   First;
   while not FDQuery1.eof do
   begin
     with ButtonGroup1 do
     begin
       BorderStyle := bsNone;
       ButtonHeight := 33;
       ButtonWidth := 124;
       ButtonOptions := [gboAllowReorder,
                          gboGroupStyle,
                          gboShowCaptions];
       with Items.Add do
       begin
         Caption   :=  FDQuery1.fieldbyname('shiftsure').AsString;
         OnClick   :=  ButtonClick;
       end;
     end;
     next;
   end;
 end;
Cevapla
#2
procedure TForm1.ButtonClick(Sender: TObject);
begin
ShowMessage(TButton(Sender).Caption);
end;
Cevapla
#3
Button click yaptığın event function un sender olayına 
procedure TForm.OnButtonClic1k(Sender: TObject);
var
Baslik:String;
EventTag:Integer;
begin
if Sender is TButton then
Deger:=TButton(Sender).Caption)
EventTagP:=TButton(Sender).Tag;
// Ama Ben Tag olayını tercih ediyorum. Taglara identyleri yükleyip evet vermek daha güzel tabii integer büyüklüğünü geçmeyecek şekilde olması lazım
// Kolay gelsin
end;
Cevapla
#4
Evet eğer buton normal buton olsaydı bu yazdığınız kodlar işe yarayacak fakat benim komponentim Tbuttongroup ve butonlar çalışma anında oluşuyor. Oluşma sırasında verilen caption değeri ile buttonclick olayında atama yapmam gerekiyor. Cevaplar için teşekkür ederim
Cevapla
#5
procedure TForm1.ButtonGroup1ButtonClicked(Sender: TObject; Index: Integer);
begin
ShowMessage(TButtonGroup(Sender).Items[Index].Caption);
end;
Cevapla
#6
Bu kodları denemiştim ama index'ten ötürü argument out of range hatası veriyor. O yüzden çalıştıramadım. ButtonGroup1ButtonClicked olayında ise boş dönüyor.
Cevapla
#7
(05-11-2020, Saat: 15:30)bkantur Adlı Kullanıcıdan Alıntı: Bu kodları denemiştim ama index'ten ötürü argument out of range hatası veriyor. O yüzden çalıştıramadım. ButtonGroup1ButtonClicked olayında ise boş dönüyor.

ben denedim bir sorun görünmüyor çalışıyor.
Cevapla
#8
(05-11-2020, Saat: 15:04)bkantur Adlı Kullanıcıdan Alıntı: Evet eğer buton normal buton olsaydı bu yazdığınız kodlar işe yarayacak fakat benim komponentim Tbuttongroup ve butonlar çalışma anında oluşuyor. Oluşma sırasında verilen caption değeri ile buttonclick olayında atama yapmam gerekiyor. Cevaplar için teşekkür ederim

TButtonGRoup vs.. Fark etmemekte önemli olan Butonu oluşturduğunuz zaman Buton un eventları sırasında vereceğiniz özel işlemlerle birlikte problemsiz bir şekilde sender da özzelikleri aktarmak.

Bu mantıkla itemindex bile kullanmaya gerek kalmadan sorunu çözmenizde herhangi bir sıkıntı olmaz.

Ayrıca 
procedure TForm1.ButtonGroup1ButtonClicked(Sender: TObject; Index: Integer);
begin
ShowMessage(TButtonGroup(Sender).Items[Index].Caption);
end;
Eğer kullancaksanız.! OnClick Olayını kullanmaya gerek yok .!

 with Items.Add do
       begin
         Caption   :=  FDQuery1.fieldbyname('shiftsure').AsString;
         OnClick   :=  ButtonClick; -> Olayını kullanmaya gerek yok
       end;

Ve Kodları Aynı Şekilde Çalışırdığım zaman herhangi bir sıkıntı ile karşılaşmadan çalıştırdım. Ekteki kodlar problemsiz çalışmakta
.zip   btngroup.zip (Dosya Boyutu: 55,27 KB / İndirme Sayısı: 3)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  or komutu hakkinda sadikacar60 1 119 12-04-2024, Saat: 17:17
Son Yorum: sso
  AES Şifreleme Hakkında tmrksmt 18 1.484 14-02-2024, Saat: 10:42
Son Yorum: tmrksmt
  TDictionary kullanımım hakkında yhackup 3 452 09-02-2024, Saat: 15:58
Son Yorum: SimaWB
  TfrxReport Rapor dizaynı hakkında yhackup 2 283 24-01-2024, Saat: 11:35
Son Yorum: yhackup
  EdgeBrowser Hakkında bydelphi 2 543 19-11-2023, Saat: 10:21
Son Yorum: bydelphi



Konuyu Okuyanlar: 1 Ziyaretçi