WM_RBUTTONDOWN mesajının nereye tıklandığını bulmak?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Omers
Üye
Mesajlar: 14
Kayıt: 21 Eki 2006 05:51
Konum: Bursa

WM_RBUTTONDOWN mesajının nereye tıklandığını bulmak?

Mesaj gönderen Omers »

Kolay Gelsin...

Ben WM_RBUTTONDOWN mesajını kullanarak forma tıklandıgını buldum ama tam olarak yapmak istediğimi beceremedim.. programda calıştırıldıktan sonra baska nesnelerin create edilme olayı var. Ben butona tıkllandığında ekranda "butona tıklandı" edit1'e tıklandığında "edit1 isimli bileşene tıklandı" ve edit2 vs.... gibi bir işlem yaptırmak istiyordum ama beceremedim.

bu şekilde Fare olayını aldım

Kod: Tümünü seç

  procedure WM_RBUTTONDOWN(var Message: TWMMouse); message WM_RBUTTONDOWN;
içini birkaç türlü doldurmaya çalıştım.. ama olmadı..

1.

Kod: Tümünü seç

procedure TForm1.WM_RBUTTONDOWN(var Message: TWMMouse);
var
  Sender : TComponent;
begin
  if Sender is TButton then showmessage('Buton')
  else
  if Sender is TEdit then showmessage('TEdit')
  else
  if Sender is TForm then showmessage('Form');
end; //Hata veriyor.. Sender'ı tanıplayıp kullanılmazsa hata vermiyor. :) 
2.

Kod: Tümünü seç

procedure TForm1.WM_RBUTTONDOWN(var Message: TWMMouse);
begin
  showmessage('Farenin Sağ Tuşuna Tıklandı');
end; //Çalışıyor, Sadece forma tıklandığında...
Ben bu procedure u bir kere yazıp oluşturulan nesnelere atarım diye düşündüm ama olmadı... yardımcı olursanız sevinirim..

Kolay Gelsin..
MY Yolcusu...
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: WM_RBUTTONDOWN mesajının nereye tıklandığını bulmak?

Mesaj gönderen adelphiforumz »

önce create ettiğin objelerin onmousedown eventine aşağıdaki kodu yönlendirirsen
sanırım olacaktır istediğin

Kod: Tümünü seç

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbright Then
  begin
    if Sender is TButton then showmessage('Buton')
    else
    if Sender is TEdit then showmessage('TEdit');
  end;
end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: WM_RBUTTONDOWN mesajının nereye tıklandığını bulmak?

Mesaj gönderen Battosai »

Aşağıdaki kod mouse hangi nesne üzerindeyse onun adını verir...
function FindComponentAtCursor: TWinControl;
var Pt: TPoint;
begin
GetCursorPos(Pt);
Result := FindControl(WindowFromPoint(Pt));
end;
Cevapla