PDA

View Full Version : Arrow keys



m_reza
چهارشنبه 10 اردیبهشت 1382, 12:07 عصر
سلام

چطور می تونم Arrow keys را با کد نویسی فعال کنم ؟
مثلا می خواهم با زدن کلید بالایی کلیدهای جهت دار ،پیغامی نمایش داده شود؟
در onkeypress کدهای زیر را تعریف کردم

if key=chr(key_F2) then
ShowMessage('xxxx');

if key=#13 then
ShowMessage('xxxx');
البته این کدها کلید بالایی Arrow keys را فعال نمی کنند ولی با زدن کلید F2 و یا Enter پیغام نمایش داده می شود

اما وقتی آنها را به شکل زیر تغییر دادم نتیجه ای حاصل نشد.

if key=Chr(VK_UP) then
ShowMessage('xxxx');

if key=chr(Key_Up) then
ShowMessage('xxxx');

خاطر نشان می کنم که یونیت Qt را در قسمت Uses نیز تعریف کردم.

لطفا راهنمایی کنید

---------------
با تشکر از همگی دوستان

دلفی3000
چهارشنبه 10 اردیبهشت 1382, 12:41 عصر
یک سری به
http://www.arianexpress.com/delphi/viewtopic.php?p=114#114
بزن

m_reza
چهارشنبه 10 اردیبهشت 1382, 14:13 عصر
لینکی که شما گفتید چیز خاصی نداشت اما توضیحی هم که در arianexpress داده بودید هم دردی رو دوا نکرد :(



برای کنترل کلید های جهت از کد زیر استفاده میشود و برای دیدن بقیه کلیدها
به راهنمای دلفی مراجعه نمایید.
در رویداد On Key Down شی مورد نظر کد زیر را تایپ کن :
کد:
case key of
VK_LEFT : ShowMessage('Left Arrow key');//Left Arrow key
VK_UP : ShowMessage('Up Arrow key');//Up Arrow key
VK_RIGHT : ShowMessage('Right Arrow key'); //Right Arrow key
VK_DOWN : ShowMessage('Down Arrow key'); //Down Arrow key
end;


:?: :roll:

amirrf
چهارشنبه 10 اردیبهشت 1382, 21:32 عصر
سلام،

کلیدهای جهتی منجر به رخ دادن OnKeyPress نمی شوند.
کد رو در رخدادگردان OnKeyDown بنویسید:

if key=VK_UP then
ShowMessage('xxxx')

یونیت Qt برای برنامه های Cross Platform است و به این موضوع ارتباطی ندارد.

m_reza
پنج شنبه 11 اردیبهشت 1382, 16:27 عصر
با تشکر از پاسخ شما و همچنین دلفی 3000
:wink: 8)

sadeghi_17
پنج شنبه 18 اردیبهشت 1382, 12:48 عصر
من هم این مشکل رو دارم
ولی همین را مى دانم که متد onkeydown موقع زدن اروکی فراخوانی نمیشود
البته فقط برای button

baabi
پنج شنبه 18 اردیبهشت 1382, 14:03 عصر
با سلام
در مورد کلید tab چی؟ میشه یه راهنمایی بکنید؟

amirrf
جمعه 19 اردیبهشت 1382, 19:02 عصر
سلام،

کلید TAB منجر به رخ دادن هیچ یک از آن رویدادها نمی شود. در پاسخ پیغام CM_DIALOGKEY می توانید کلید TAB را پردازش کنید. کلیدهای جهتی روی Button ها هم منجر به رخ دادن آن رویدادها نمی شود، آن را نیز می توانید اینجا پردازش کنید.

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
private
procedure CMDialogKey(var message: TCMDialogKey); message CM_DIALOGKEY;
public
end;

...


procedure TForm1.CMDialogKey(var message: TCMDialogKey);
begin
if message.CharCode = VK_TAB then
ShowMessage('TAB');

if message.CharCode = VK_UP then
message.CharCode := 0;

inherited;
end;