Delphi Can

Orjinalini görmek için tıklayınız: kod ile oluşturulan butona olay ekleme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2 3
ÇÖ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;
Kardeş sitede bu konu farklı bir yapı ile ele alınmıştı
http://www.delphiturkiye.com/forum/viewt...nt#p195130
(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ı
(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. Smile
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. Smile
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 Big Grin
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
istediğin şey böyle bir şey değil mi ?

c-eventargs
Sayfalar: 1 2 3