PDA

View Full Version : Keyboard Activation



m_olaei
شنبه 20 اسفند 1384, 15:00 عصر
سلام
کسی میدونه چطور میشه یک کلید میانبر تعریف کرد، زمانی که برنامه در حال اجراست اما برنامه در Background است و برنامه دیگر روی برنامه باز است، با زدن کلید میانبر برنامه ما متوجه شود و عکس العمل نشان دهد. مانند Dictionaryها که با یک کلید فعال شده و واکنش نشان می‌دهند.
:متفکر:

Mahmood_M
شنبه 20 اسفند 1384, 18:37 عصر
سلام دوست عزیز، اگه برنامه شما به کنار ساعت در نوار فرمان میره بهتره که برای نمایش دادنش یک Action تعریف کنید و برای اون یک کلید میانبر بزارید و در Action مورد نظر کد زیر رو بنویسید:


Application.Restore;

اصلا تابع زیر رو نگاه کنید:


function MinimizeToTray(Restore: Boolean = False): Boolean;
var
hwndMain,
hwndTray: HWND;
rcWindow,
rcTray: TRect;
begin
Result := False;
hwndMain := Application.MainForm.Handle;
if IsWindow(hwndMain) then
begin
hwndTray := FindWindow('Shell_TrayWnd', nil);
hwndTray := FindWindowEx(hwndTray, 0, 'TrayNotifyWnd', nil);
hwndTray := FindWindowEx(hwndTray, 0, 'SysPager', nil);
hwndTray := FindWindowEx(hwndTray, 0, 'ToolbarWindow32', nil);
if hwndTray = INVALID_HANDLE_VALUE then Exit;
GetWindowRect(hwndMain, rcWindow);
GetWindowRect(hwndTray, rcTray);
if not Restore then begin
Result := DrawAnimatedRects(hwndMain, IDANI_CAPTION, rcWindow, rcTray);
if Result then Application.MainForm.Hide;
end else begin
Result := DrawAnimatedRects(hwndMain, IDANI_CAPTION, rcTray, rcWindow);
if Result then Application.MainForm.Show;
end;
end;
end;

این تابع فرم رو به SystemTray می بره ...
برای برگردوندنش، در همون Action ای که ساختید کد زیر رو بنویسید:


procedure TForm1.Action1Execute(Sender: TObject);
begin
MinimizeToTray(True);
end;

DAMAVAND
دوشنبه 22 اسفند 1384, 02:00 صبح
سلام:
در ضمن میتونی از تابع ( Getkeystate) هم استفاده کنی.عیبش اینکه باید با Timerچکش کنی.

mviran2007
جمعه 14 دی 1386, 00:18 صبح
با سلام
لطفا" می توانید به من بگویید در دلفی چگونه یک Action‌تعریف می کنند و چگونه من می توانم برای System Tray‌یک ICon قرار بدهم که هر موقع روی ICON کلیک می کنم فرم برنامه بازشود یا کار دیگری انجام دهد. با تشکر و سپاس

vcldeveloper
جمعه 14 دی 1386, 03:44 صبح
لطفا" می توانید به من بگویید در دلفی چگونه یک Action‌تعریف می کنند
در Help دلفی صفحات مربوط به TActionManager، TActionList و TAction را مطالعه کنید. همین عبارات را می توانید در همین سایت هم جستجو کنید.


چگونه من می توانم برای System Tray‌یک ICon قرار بدهم که هر موقع روی ICON کلیک می کنم فرم برنامه بازشود یا کار دیگری انجام دهد.
ربطی به این تاپیک نداره. در تاپیک دیگه ایی پرسیدید و جواب گرفتید.

SYNDROME
جمعه 14 دی 1386, 07:37 صبح
کسی میدونه چطور میشه یک کلید میانبر تعریف کرد، زمانی که برنامه در حال اجراست اما برنامه در Background است و برنامه دیگر روی برنامه باز است، با زدن کلید میانبر برنامه ما متوجه شود و عکس العمل نشان دهد. مانند Dictionaryها که با یک کلید فعال شده و واکنش نشان می‌دهند.



TActionManager، TActionList و TAction

با احترام
علی جان فکر کنم ActionList فقط زمانی که فرم فعال است Shortcut آن عمل می کند و اگر فرم غیر فعال شود هیچ عملی را انجام نمی دهد.
موفق باشید

vcldeveloper
جمعه 14 دی 1386, 08:47 صبح
فکر کنم ActionList فقط زمانی که فرم فعال است Shortcut آن عمل می کند و اگر فرم غیر فعال شود هیچ عملی را انجام نمی دهد.
درسته، ولی من اون مطلب رو در جواب این پست نوشتم:

لطفا" می توانید به من بگویید در دلفی چگونه یک Action‌تعریف می کنند