Yorumları: 513
Konuları: 88
Kayıt Tarihi: 28-12-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.178 Programcı
İyi günler.
Formun her yerinde geçerli mouse sağ tuş click olayını nasıl yakalarım.
formun üstündeki tüm componentler de geçerli olacak.
Formun keypreview açık
formun olaylarında Formmousedown olayına kod yazdım.
Form da çalışıyor form üzerindeki herhangi bir componentte çalışmıyor.
hepsinin olayına yazma olmaz herhalde.
// mouse sağ tuşu yakala
Case Button of
// mbLeft : ShowMessage('Sol tuşa basıldı');
// mbMiddle : ShowMessage('Orta tuşa basıldı');
mbRight : sag_clik_menu.Popup(mouse.CursorPos.x,mouse.CursorPos.y);
End;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
Merhaba,
her bileşene aynı kodu yazmaktansa her bileşenin mousedown olayına formun mousedown olayını tanıtmakta olası bir seçenek sanırım.
En temelde bu şekilde yapılabilir. tabi çok bilgim yok aklıma bu geldi sadece.
Yorumları: 101
Konuları: 7
Kayıt Tarihi: 30-06-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 334 Acemi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
sag_clik_menu: TPopupMenu;
aa1: TMenuItem;
bb1: TMenuItem;
cc1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
MouseLLHookStruct = record
pt : TPoint;
mouseData : cardinal;
flags : cardinal;
time : cardinal;
dwExtraInfo : cardinal;
end;
var
Form1 : TForm1;
mHook : cardinal;
implementation
{$R *.dfm}
function LowLevelMouseHookProc(nCode, wParam, lParam : integer) : integer; stdcall;
var
info : ^MouseLLHookStruct absolute lParam;
begin
result := CallNextHookEx(mHook, nCode, wParam, lParam);
with info^ do
case wParam of
wm_rbuttondown : Form1.sag_clik_menu.Popup(pt.x, pt.y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
const
wh_mouse_ll = 14;
begin
mHook := SetWindowsHookEx(wh_mouse_ll, @LowLevelMouseHookProc, hInstance, 0);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnhookWindowsHookEx(mHook);
end;
end.
Yorumları: 513
Konuları: 88
Kayıt Tarihi: 28-12-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.178 Programcı
07-11-2020, Saat: 20:23
(Son Düzenleme: 07-11-2020, Saat: 20:25, Düzenleyen: cinarbil.)
(07-11-2020, Saat: 17:21)Mr.Developer Adlı Kullanıcıdan Alıntı: Merhaba,
her bileşene aynı kodu yazmaktansa her bileşenin mousedown olayına formun mousedown olayını tanıtmakta olası bir seçenek sanırım.
En temelde bu şekilde yapılabilir. tabi çok bilgim yok aklıma bu geldi sadece.
Cevap için teşekkür ederim .
Label,Edit, v.s gibi 100 den fazla component için pek uygun olmadığı kanaatindeyim.
(07-11-2020, Saat: 18:51)bibilen Adlı Kullanıcıdan Alıntı: unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
sag_clik_menu: TPopupMenu;
aa1: TMenuItem;
bb1: TMenuItem;
cc1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
MouseLLHookStruct = record
pt : TPoint;
mouseData : cardinal;
flags : cardinal;
time : cardinal;
dwExtraInfo : cardinal;
end;
var
Form1 : TForm1;
mHook : cardinal;
implementation
{$R *.dfm}
function LowLevelMouseHookProc(nCode, wParam, lParam : integer) : integer; stdcall;
var
info : ^MouseLLHookStruct absolute lParam;
begin
result := CallNextHookEx(mHook, nCode, wParam, lParam);
with info^ do
case wParam of
wm_rbuttondown : Form1.sag_clik_menu.Popup(pt.x, pt.y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
const
wh_mouse_ll = 14;
begin
mHook := SetWindowsHookEx(wh_mouse_ll, @LowLevelMouseHookProc, hInstance, 0);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnhookWindowsHookEx(mHook);
end;
end.
cevap için teşekkür ederim daha önce bilmediğim kodlar inceleyerek deneyeceğim
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
Bir an genel programlama da açıldığını fark ettim.
Sağ tık olayından bahsetmiş olmanıza rağmen aklım FMX de kalmış özür dilerim. "100'den fazla" ibaresini görünce dedim "neee!".
Mobil de o kadar şey nasıl sığmış falan diye geçirdim bir an aklımdan
|