ÇÖZÜLDÜ
merhaba değerli hocallarım bugün for ile 1 den fazla buton oluşturuyorum peki o butona nasıl olay ekliyeceğiz yani normalde button2.click olayını yazarım ama buton olmadığı için hata alıyorum buton sonradan eklendiği için nasıl bi mantığı vardır bunu?
şimdiden teşekkürler...
for I := 0 to Length(EnigmaAPI.Categories.yabancifilim) - 1 do
begin
yabancifilmbutton:=Tbutton.create(self);
yabancifilmbutton.top:=100;
yabancifilmbutton.left:=100;
yabancifilmbutton.height:=35;
yabancifilmbutton.width:=100;
yabancifilmbutton.Font.Size:=15;
yabancifilmbutton.parent:=(form2.ScrollBox3);
yabancifilmbutton.Align:=altop;
yabancifilmbutton.Name:= 'a' + EnigmaAPI.Categories.yabancifilim[i].category_id;
yabancifilmbutton.caption:= EnigmaAPI.Categories.yabancifilim [i].category_name;
end;
(26-06-2018, Saat: 10:06)arsl01 Adlı Kullanıcıdan Alıntı: [ -> ] (26-06-2018, Saat: 10:03)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]Kardeş sitede bu konu farklı bir yapı ile ele alınmıştı
http://www.delphiturkiye.com/forum/viewt...nt#p195130
eyw yalnız buradaki benim konumla faklı
Çok farklı değil
Sanırım sayfada yazanlar biraz uzun ve detaylı diye tam okumadan yorum yaptın gibime geliyor.
Sen bir butona bir event atamak istemiyormusun.
Eğer sorumun cevabı evet ise incelemen gereken yer doğru
Hayır ise ben ne demek istediğini anlıyamamışım demektir kusura bakma
Aşağıdakine benzer şekilde yapabilirsiniz.
for I := 0 to Length(EnigmaAPI.Categories.yabancifilim) - 1 do
begin
yabancifilmbutton:=Tbutton.create(self);
yabancifilmbutton.top:=100;
//vs.vs.
yabancifilmbutton.tag := ...... filmid; // burasına filmin id si gelecek
yabancifilmbutton.OnClick:=FilmButonClick; // yonlendiriceksiniz.
end;
procedure TForm1.FilmButonClick(sender: TObject);
var
filmid:Integer;
begin
filmid:=TButton(Sender).tag;
//ve yapmak isteiğiniz işlemler
end;
Unit'inizin
interface kısmında şu şeklinde bir procedure tanımlayın:
type
TMainForm = class(TForm)
//...
procedure ButtonClick(Sender: TObject);
//...
end;
Daha sonra
implementation bölümünde bu procedure'de neler yapılacağı yazmalısınız:
procedure TMainForm.ButtonClick(Sender: TObject);
begin
ShowMessage(TButton(Sender).Name);
end;
Sizin paylaştığınız kodlarda yapmanız gereken ekleme:
yabancifilmbutton.OnClick := ButtonClick;
(26-06-2018, Saat: 10:28)SimaWB Adlı Kullanıcıdan Alıntı: [ -> ]Unit'inizin interface kısmında şu şeklinde bir procedure tanımlayın:
type
TMainForm = class(TForm)
//...
procedure ButtonClick(Sender: TObject);
//...
end;
Daha sonra implementation bölümünde bu procedure'de neler yapılacağı yazmalısınız:
procedure TMainForm.ButtonClick(Sender: TObject);
begin
ShowMessage(TButton(Sender).Name);
end;
Sizin paylaştığınız kodlarda yapmanız gereken ekleme:
yabancifilmbutton.OnClick := ButtonClick;
yalnız butonların ismi belli değil ve kaç tane olduğuda belli dğeil jsonda kaç tane varsa ona göre yapılacak yani butonların ismini fordaki category_id belirliyor
(26-06-2018, Saat: 10:18)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ] (26-06-2018, Saat: 10:06)arsl01 Adlı Kullanıcıdan Alıntı: [ -> ]eyw yalnız buradaki benim konumla faklı
Çok farklı değil
Sanırım sayfada yazanlar biraz uzun ve detaylı diye tam okumadan yorum yaptın gibime geliyor.
Sen bir butona bir event atamak istemiyormusun.
Eğer sorumun cevabı evet ise incelemen gereken yer doğru
Hayır ise ben ne demek istediğini anlıyamamışım demektir kusura bakma
hocam evet ama buton ortada yok buton sonradan geliyor
Oluşturulan her butonun aslında ismi vardır ama siz kullanmayacaksanız siz bilirsiniz.
for I := 0 to Length(EnigmaAPI.Categories.yabancifilim) - 1 do
begin
with Tbutton.create(self) do
begin:
//...
OnClick := ButtonClick;
//...
end;
end;
procedure TMainForm.ButtonClick(Sender: TObject);
var
birButton: TButton;
begin
birButton := TButton(Sender);
// burada birButton basılan butonu temsil eder. Buradan sonrası ne yapmak istediğinize göre size kalmış...
end;
(26-06-2018, Saat: 10:39)SimaWB Adlı Kullanıcıdan Alıntı: [ -> ]Oluşturulan her butonun aslında ismi vardır ama siz kullanmayacaksanız siz bilirsiniz.
for I := 0 to Length(EnigmaAPI.Categories.yabancifilim) - 1 do
begin
with Tbutton.create(self) do
begin:
//...
OnClick := ButtonClick;
//...
end;
end;
procedure TMainForm.ButtonClick(Sender: TObject);
var
birButton: TButton;
begin
birButton := TButton(Sender);
// burada birButton basılan butonu temsil eder. Buradan sonrası ne yapmak istediğinize göre size kalmış...
end;
hocama nladım sizi ama sizin örnekte hangi buton içi yapılmış butonun ismi birbuttonmu