PDA

View Full Version : سوال: قرار دادن میانبر برای Button



hasandrw
یک شنبه 16 مرداد 1390, 12:16 عصر
با سلام خدمت دوستان
چجوری میشه برای Button یا برای سایر کنترل ها کلید میانبر قرار داد؟

tdkhakpur
یک شنبه 16 مرداد 1390, 13:57 عصر
یک دونه کنترل MesageEvent رو فرم قرار بده و کدهای زیر رو داخل فرم اعمال کن.


rocedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);
begin
if Msg.message= WM_HOTKEY then
if LOWORD(Msg.lParam)=MOD_CONTROL then
if HIWORD(Msg.lParam)=ord('Z') then
ShowMessage('hi, i am control + z key');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey( Button1.Handle, 0, MOD_CONTROL, ord('Z'));
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnregisterHotKey(Button1.Handle, 0);
end;

از این طریق شما یک دانه hotkey برای button که با فشار ctrl+z اجرا میشه ساخته اید.

hasandrw
یک شنبه 16 مرداد 1390, 14:20 عصر
ممنونم از همکاریتون
ولی تو دلفی 2010 کنترل MesageEvent تو پنل کنترل ها وجود نداره!

عقاب سیاه
یک شنبه 16 مرداد 1390, 14:32 عصر
ببخشید دخالت می کنم!!
ولی فکر کنم اسم همچین کامپوننتی توی دلفی 2010 هست :ApplicationEvents

hasandrw
یک شنبه 16 مرداد 1390, 15:01 عصر
از طریق کنترل HotKey هم میشه کلید میانبر گذاشت؟
اگه میشه راهنمای ام کنین.

عقاب سیاه
یک شنبه 16 مرداد 1390, 16:01 عصر
دوست عزیز اون جور که من می دونم این کنترل فقط دریافت کلید میانبر از کاربر را راحت تر می کند!
فکر کنم اگه بگید دقیقا می خواهید چی کار کنید دوستان راحت تر کمکتون کنند؟!

بازم ببخشید!

BORHAN TEC
یک شنبه 16 مرداد 1390, 16:29 عصر
بهترین راه برای این مسئله استفاده از TActionList است. :چشمک:

hasandrw
یک شنبه 16 مرداد 1390, 17:31 عصر
از طریق TActionList اگه میشه درباره نحوه ساخت میانبر بیشتر راهنمایی کنید.
در ضمن منظور من از کلید میانبر اینه که مثلا من یک Button دارم که یک سری دستورات روی اون نوشتم و در زمان اجرا به جای کلیک روی Button می خوام از کلید میانبر استفاده کنم.حالا دیگه فکر کنم منظورم رو فهمیده باشید.

BORHAN TEC
یک شنبه 16 مرداد 1390, 17:52 عصر
حالا دیگه فکر کنم منظورم رو فهمیده باشید.
بله، از همون اول متوجه منظورتون شدم.

ابتدا یک کامپوننت از نوع TActionList را روی فرم قرار دهید.
بر روی آن راست کلیک کرده و گزینه Action List Editor.. را انتخاب کنید.
در پنجره باز شده بر روی دکمه New Action کلیک کنید.
در لیست Action اکشن ساخته شده را انتخاب کنید(در اینجا Action1). به پنجره Objects Inspector رفته و از طریق خاصیت ShortCut یک میانبر را به آن اختصاص دهید.
حال در رویداد OnExecute مربوط به Action1 کد مورد نظر خود را بنویسید.
حال اگر برنامه را اجرا کنید با فشردن کلید های میانبر تعریف شده کدی که در رویداد OnExecute مربوط به Action1 نوشته اید اجرا می شود.
حال اگر می خواهید که کد مورد نظر را به رویداد Click مربوط به Button1 مرتبط کنید می توانید از کد زیر استفاده کنید:
procedure TForm2.Button1Click(Sender: TObject);
begin
Action1.Execute;
end;