Çalışma Esnasında Kodla oluşturulan bir nesneye olay ekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Unyeli
Üye
Mesajlar: 11
Kayıt: 10 Ağu 2003 09:46
Konum: Ordu

Çalışma Esnasında Kodla oluşturulan bir nesneye olay ekleme

Mesaj gönderen Unyeli »

Merhaba
Çalışma Esnasında kodla oluşturduğum bir nesnenin olaylarını nasıl kontrol edebiliriz. Mesala kodla oluşturduğum bir butonu hareket ettirmek istiyorum. bir butonu hareket ettirmek için,

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
TButton(Sender).perform(WM_SYSCOMMAND, $F012, 0);
end;

kodunu kullanıyorum. Ama kodla oluşturduğum butonu nasıl hareket ettirebilirim bana yardım ederseniz sevinirim.
hicker
Üye
Mesajlar: 68
Kayıt: 01 Tem 2003 09:58
Konum: Konya

Mesaj gönderen hicker »

merhaba,
oluşturduğun butona verdiğin ismin butonismi isimli bir string değişkende tutulduğunu düşünürsek sanırım aşağıdaki kod işini görür :

TButton(FindComponent(butonismi)).perform(WM_SYSCOMMAND, $F012, 0);

kolay gelsin..
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Button1MouseDown procedure ni private kısımda tanımla.
Butonunu run time oluşturduktan sonra şöyle bir kod yazman gerekiyor altına:

Kod: Tümünü seç

     obj_buton.onMouseDown := Button1MouseDown;
oluşturduğun butonun onMouseDown eventında o procedure yi çağırır.
Kolay gelsin.
Kullanıcı avatarı
Unyeli
Üye
Mesajlar: 11
Kayıt: 10 Ağu 2003 09:46
Konum: Ordu

Mesaj gönderen Unyeli »

Sevgili Hicker senin kod benimkiyle aynı işe yarıyo. o kodun çalışması için eklenen nesnenin olayını bir şekilde o koda yönlendirmem gerekiyo ama senin kod maalesef yemedi. teşekkür ederim.
Sevgili naile senin söylediğini tam anlayamadım. anladığım kadarıyla procedure'ü
private
procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
şeklinde tanımlıyoz. Ama bu sefer unit'in type kısmından silinmesi gerekiyo. o şekilde projeyi çalıştırdığımda 'invalid Property value' gibi bi hata veriyo. Alttada "Private symbol 'button1mousedown' declared but never used' hatası veriyo. private kısmında tanıtmadan denedim obj_buton tanımsız hatası veriyo. Ne yazık ki bu da işe yaramadı. Başka bir öneriniz var mı? Teşekkür Ederim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öncelikle sana tavsiyem dikkatli ol, o "Alttada 'Private symbol 'button1mousedown' declared but never used' hatası veriyo." dediğin bir warning yani uyarıdır. Anlamını bilmiyorsun belki diye söyliyeyim., button1mousedown tanımlanmış ama hiç kullanılmamış demek.
Nailenin söylediğini biraz daha detaylandırayım, form un üzerine bir tane butan koy ve mouse down unu oluştur, daha sonrada eğer istemiyorsan form üzerinden butonu sil, sadece butonu Event kalsın, daha sonrada RunTime Button u nerde create ediyorsan, Create ettiğin Button un, (Diyelim adı My_Button)

Kod: Tümünü seç

My_Button.OnMouseDown := button1mousedown;
yazacaksın okadar.
Nailenin söylediği gibi Private kısmına eklenmek zorunda değil sadece Class ın içinde olması gerekir, Yani Protected yada public e de yazılabilinir
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
Unyeli
Üye
Mesajlar: 11
Kayıt: 10 Ağu 2003 09:46
Konum: Ordu

Mesaj gönderen Unyeli »

fremen35 söylediğin gibi yaptım işe yaradı.
yardımlarınınz için teşekkür ederim.
Kullanıcı avatarı
mehmet_turecan_cakmak
Üye
Mesajlar: 132
Kayıt: 02 Tem 2003 01:08
Konum: Afyon
İletişim:

hareket

Mesaj gönderen mehmet_turecan_cakmak »

unyeli ben senin yerinde olsam formun keydown olayına butonun top ve left olaylarıyla ilgili kodlar yazardım yani butonun top ve leftini arttırıp eksilterek gibi...

iyi çalışmalar...
bay_e87
Üye
Mesajlar: 8
Kayıt: 03 Eki 2007 10:04

Mesaj gönderen bay_e87 »

freeman35 tam senin dediğini tam anlıyamadım

sadece butonu Event kalsın, daha sonrada RunTime Button u nerde create ediyorsan, Create ettiğin Button un, (Diyelim adı My_Button)
Kod:
My_Button.OnMouseDown := button1mousedown;

yazacaksın okadar.

özelliklede bu kısmı
Cevapla