PDA

View Full Version : سوال: چطوری میشه کار OnKeyPress یه شی رو برای OnKeyDown یه شی دیگه تعریف کرد؟



joooje
سه شنبه 13 اردیبهشت 1390, 16:42 عصر
سلام
چطوری میشه کار OnKeyPress یه شی رو برای OnKeyDown یه شی دیگه تعریف کرد؟
مثل این:
CheckBox1.OnKeyDown := Button1.OnKeyPress;
ولی به کد بالا ایراد میگیره
ممنون میشم راهنمایی کنید
در حقیقت من کد زیر زو میتونم توی OnKeyPress بنویسم ولی میخوام اونو توی OnKeyDown بنویسم که ایراد میگیره

if Key = #13 then
begin
Key := #0;
ShowMessage('Enter Key Pressed');
end;
به این کد تو OnKeyDown ایراد نمیگیره ، ولی کارایی Key := #0; دیگه درست نیست


if Key = 13 then
begin
Key := 0;
ShowMessage('Enter Key Pressed');
end;

یوسف زالی
سه شنبه 13 اردیبهشت 1390, 17:53 عصر
ببین یه ازای هر کلیدی یه کد کاراکتری داریم و یه معادل virtual key مثل VK_Return که معادل عددی #13 هست.
از اونا استفاده کن.
اون انتصاب هم به علت این کار نمی کنه که نوع پارامترهاش یکی نیست.

joooje
سه شنبه 13 اردیبهشت 1390, 19:50 عصر
ممنون
ولی virtual key برای دیگر دکمه ها مانند تب و شیفت و... رو چطور به دست بیارم
مثلا اگر بخوام وقتی کاربر shift+tab رو زد یه کار براش تعریف کنم
ممنون از راهنماییتون
میشه کد برام بزارید.

nilidelphi
سه شنبه 13 اردیبهشت 1390, 21:34 عصر
خوب تو محیط کد نویسی دلفی هر جا لازم بود حروف VK_ تایپ کن بعد Ctrl+Space رو بزن خودش بقیه کلید هارو میاره


موفق باشید.

joooje
سه شنبه 13 اردیبهشت 1390, 23:49 عصر
خوب تو محیط کد نویسی دلفی هر جا لازم بود حروف VK_ تایپ کن بعد Ctrl+Space رو بزن خودش بقیه کلید هارو میاره
موفق باشید.
ببخشید من نتونستم این کاری که میگید رو بکنم
میشه بیشتر راهنمایی کنید

tdkhakpur
چهارشنبه 14 اردیبهشت 1390, 01:07 صبح
مثلا اگر بخوام وقتی کاربر shift+tab رو زد یه کار براش تعریف کنم
باید برای این کار hotkey تعریف کنید.
با کد


RegisterHotKey( Form1.Handle, 0, MOD_SHIFT, VK_TAB);

تعریف و با


UnregisterHotKey(Form1.Handle, 0);

آزاد کنید.
برای استفاده هم میتوانید این بررسی رو داخل ApplicationEvents در زویدادOnMessage بصورت زیر برسی کنید.


if Msg.message= WM_HOTKEY then
if LOWORD(Msg.lParam)=MOD_SHIFT then
if HIWORD(Msg.lParam)=VK_TAB then
ShowMessage('hi, i am shift+tab key');

یوسف زالی
چهارشنبه 14 اردیبهشت 1390, 04:27 صبح
چرا اینقدر سختش میکنید؟
if (Shift = [ssShift] ) and(key = VK_TAB) then.

اما تب رو باید کنترل بگیری.
اون shift میتونه ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble باشه.

nilidelphi
چهارشنبه 14 اردیبهشت 1390, 11:48 صبح
مگه شما نمیخواهید که همه ی کلید های مجازی رو ببینید؟

خوب گفتم دیگه تو محیط کد نویسی هر جا لازم بود به جای شماره ی کلید از کلید مجازی استفاده کنید _VK رو بنویس بعد Ctrl+Space رو فشار بدی لیست همه ی کلید ها میاد اون وقت هر کلیدی رو که می خوی می تونی انتخاب کنی :

69525

حالا اگه این کار صورت نمی گیره حتما از نسخه ی 7 یا پایین تره دلفی استفاده می کنید.
این عکس از محیط دلفی 2010 گرفته شده

موفق باشید

SAASTN
چهارشنبه 14 اردیبهشت 1390, 19:24 عصر
VK_RETURN و بقیه کدهای مجازی کلید ها در یونیت Windows تعریف شدن. این یونیت رو باز کنید و VK_LBUTTON که اولین کد هست رو جستجو کنید. توی Help هم می تونید دنبالشون بگردید.

Gohardasht@ymail.com
چهارشنبه 14 اردیبهشت 1390, 19:27 عصر
خوب بود. با تشکر از شما.