Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mouse double click
#1
Merhaba, formun  belli bir köşesinde mouse double clik olayı yapılmışsa işlem yaptırmak istiyorum.  Çit tıklamayı nasıl yakalayabilirim.

Şöyle bişey gördüm ama nasıl kullanıldığını bulamadım. Prosedürü kullanırken TMessage yerine ne yazmalıyım..


 private
   procedure WMNCLBUTTONDBLCLK(var msg: TMessage); message WM_NCLBUTTONDBLCLK; { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCLBUTTONDBLCLK(var msg: TMessage);
begin
 if msg.wParam = HTCAPTION then Caption := 'Double Click!';
 // Message.Result := 0; {to ignore the message}
 inherited;
end;

Cevapla
#2
Form üzerinde double click yapıldığını bulmuşsun zaten, o anda mouse koordinatı nerede ise onuda bulduğunda olay tamamdır, senin belirlediğin koordinatlarda ise değme keyfine Smile
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#3
(26-07-2017, Saat: 16:30)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, formun  belli bir köşesinde mouse double clik olayı yapılmışsa işlem yaptırmak istiyorum.  Çit tıklamayı nasıl yakalayabilirim.

Şöyle bişey gördüm ama nasıl kullanıldığını bulamadım. Prosedürü kullanırken TMessage yerine ne yazmalıyım..


 private
   procedure WMNCLBUTTONDBLCLK(var msg: TMessage); message WM_NCLBUTTONDBLCLK; { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCLBUTTONDBLCLK(var msg: TMessage);
begin
 if msg.wParam = HTCAPTION then Caption := 'Double Click!';
 // Message.Result := 0; {to ignore the message}
 inherited;
end;


Merhaba sizin kullandığınız Windows mesajı, formun başlık bölümündeki çift tıklama durumunda aktif hale gelecektir. Form'un client alanı içindeki çift tıklama olayı ile ilgileniyorsanız; bu durumda Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol mesajını kullanmalısınız.

Aşağıdaki örneği bir inceleyin:

 procedure MyWMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
 ...
 ...
 procedure TForm1.MyWMLButtonDblClk(var Message: TWMLButtonDblClk); 
 var
   X,Y : SmallInt;
 begin
   X := Message.XPos;
   Y := Message.YPos;
   ...
  end;


Yukarıdaki örnekte X ve Y koordinatlarını bu şekilde elde edebilirsiniz.

Not: Delphi'de TWMLButtonDblClk türü TWMMouse'a eşitlenmiştir. Belirli bir noktanın (X/Y koordinatının) herhangi bir karesel alanda olup olmadığını tespit edebilmek için ise; Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol API'sini kullanabilirsiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
Yardımlarınız için çok teşekkürler sayenizde yeni bişey daha öğrenmiş oldum. Fakat şöyle bir sorun oldu tüm formumu kaplayan bir image nesnesi var. Haliyle forma tıklanan bişey olmadığı için malesef çalışmadı. Bunun için ne gibi düzenleme yapmam gerekir.
Cevapla
#5
(26-07-2017, Saat: 18:23)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlYardımlarınız için çok teşekkürler sayenizde yeni bişey daha öğrenmiş oldum. Fakat şöyle bir sorun oldu tüm formumu kaplayan bir image nesnesi var. Haliyle forma tıklanan bişey olmadığı için malesef çalışmadı. Bunun için ne gibi düzenleme yapmam gerekir.

 Test etmeden hızlıca bir kaç alternatif sunabilirim:
  • Formunuzun üstüne bir adet TApplicationEvents component'i ekleyin ve ilgili component'in OnMessage olayında gelen mesajın WM_LBUTTONDBLCLICK olup olmadığını kontrol edin.
  • İlgili formunuzun protected bölümünde WndProc metodunu ezin(override) ve gelen mesajın WM_LBUTTONDBLCLICK olup olmadığını kontrol edin.
  • TImage için ilgili unit'inizde formunuzun tanımlandığı type bloğunun hemen altına bir interposed class yazın ve ilgili sınıfın WndProc metodunu ezin. (TImage = class(Vcl.ExtCtrls.TImage) Ya da DblClick metodunu override edin.
  • Ya da daha basit olarak, formunuzun üstünde bulunan TImage nesnesinin OnDblClick olay yöneticisini kodlayın :-)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
Üstadım bunlar için bilgim yetersiz yapabileceğimi sanmıyorum. Ama deneyeceğimSmile))
Cevapla
#7
Malesef yapamadım..
Cevapla
#8
(27-07-2017, Saat: 17:02)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMalesef yapamadım..

Neyi yapamadınız ? Neyi nasıl yaptınız ? Hata mı alıyor sunuz ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
(27-07-2017, Saat: 12:03)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
  • Ya da daha basit olarak, formunuzun üstünde bulunan TImage nesnesinin OnDblClick olay yöneticisini kodlayın :-)

(27-07-2017, Saat: 13:23)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÜstadım bunlar için bilgim yetersiz yapabileceğimi sanmıyorum. Ama deneyeceğimSmile))


TImage'in OnDblClick'ine kod yazamadınız mı yani Wink
There's no place like 127.0.0.1
WWW
Cevapla
#10
(27-07-2017, Saat: 17:31)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTImage'in OnDblClick'ine kod yazamadınız mı yani Wink

SimaWB Yok ona kod yazabiliyorum okadar da değil.  bilgim yetersiz derken  "WndProc metodunu ezin(override) ve gelen mesajın WM_LBUTTONDBLCLICK olup olmadığını kontrol edin." bunu bilmediğimi kastettim.Smile)) 

Denediklerim,
Formun ve imajın onclick eventsını birbirlerine yönlendirerek denedim. Herhangi bir hata almadım ama formda kulllandığımız  prosedürde çalıştıramadım.
Farklı bir yol olarak mousun pozisyonunu bulup belli bir noktadaysa mesaj vermesini sağlayarak denedim. Şimdilik bu kod çalışıyor ama tabi gönül isterdiki diğerini başarabileyim.
procedure TForm1.Image1DblClick(Sender: TObject);
var
 Kordinat : tPoint;
begin
Kordinat:= Mouse.CursorPos;
if (kordinat.X>0) and (Kordinat.X<20) then ShowMessage('test');
end;
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBrowserda yeni eklenen nesnenin Click eventini çalıştırma adelphiforumz 4 238 03-03-2018, Saat: 11:26
Son Yorum: mrmarman
  mouse kontrol dilo 2 429 18-02-2017, Saat: 21:01
Son Yorum: witalihakko



Konuyu Okuyanlar: 1 Ziyaretçi