PDA

View Full Version : غیر فعال کردن MouseDown



loo30fer
سه شنبه 13 اردیبهشت 1390, 02:06 صبح
با سلام میخواستم بدونم چطور میتونم تو رویداد MouseDown راست کلیک موس رو غیر فعال کنم مانند : Key := #0
ممنون میشم کمک کنید.


procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
??????????
end;

Mahmood_M
سه شنبه 13 اردیبهشت 1390, 03:25 صبح
می تونید پیغام ارسالی هنگام راست کلیک رو هندل کنید ، یک کامپوونت ApplicationEvents بر روی فرم بزارید و در رویداد OnMessage مربوط به اون به صورت زیر عمل کنید :
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = Edit1.Handle) then
begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;
end;
در مورد هندل کردن پیغامهای ارسالی به برنامه ، هم مقاله و هم چندین سورس نمونه قبلا گذاشته شده ، در سایت جستجو کنید .

موفق باشید ...

mbshareat
سه شنبه 13 اردیبهشت 1390, 06:46 صبح
با سلام
ببخشید ApplicationEvent در کدام پالت قرار داره؟
یکی تو یه تاپیک گفته بود که کامپوننت استاندارده ولی تو نسخه 6 که دارم پیداش نکردم!

nilidelphi
سه شنبه 13 اردیبهشت 1390, 10:32 صبح
تو نسخه های برلندی فکر کنم نباشه.
باید به نسخه های جدیدتر مهاجرت کنید

یوسف زالی
سه شنبه 13 اردیبهشت 1390, 10:37 صبح
اگه میخوای مثلا تو تکست باکس هات راست کلیک نداشته باشی یه popup خالی براش ست کن درست میشه.

Mask
سه شنبه 13 اردیبهشت 1390, 12:10 عصر
با سلام
ببخشید ApplicationEvent در کدام پالت قرار داره؟
یکی تو یه تاپیک گفته بود که کامپوننت استاندارده ولی تو نسخه 6 که دارم پیداش نکردم!
در عکس جای کامپوننت مشخص شده. البته در دلفی 7

loo30fer
جمعه 20 خرداد 1390, 23:39 عصر
من اومدم کد رو بدین شکل نوشتم که امکان کلیک و راست کلیک رو از Edit1 و Edit2 بگیرم ولی یک مشکل بوجود آمد اونم اینه که دیگه تو Edit3 نمیتونم کلیک کنم یعنی قابلیت کلیک ازش گرفته شده و حتی کلیک روی فرم هم به مشکل برخورده حالا راه حل چیست ؟؟؟
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_LBUTTONDOWN) or (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = Edit1.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end else begin
if (Msg.message = WM_LBUTTONDOWN) or (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = Edit2.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;end;end;

loo30fer
جمعه 20 خرداد 1390, 23:57 عصر
ممنون مشکل رو رفع کردم اومدم دوتا شی ApplicationEvent ایجاد کردم و وظیفشون رو جدا تعیین کردم که یکی تنها کلیک رو غیرفعال کنه و دیگری راست کلیک بدین شکل :
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = Edit1.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = Edit2.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;end;

procedure TForm1.ApplicationEvents2Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_LBUTTONDOWN) and (Msg.hwnd = Edit1.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;
if (Msg.message = WM_LBUTTONDOWN) and (Msg.hwnd = Edit2.Handle) then begin
ApplicationEvents1.CancelDispatch;
Handled := True;
end;end;