PDA

View Full Version : تشخیص کلیدهایی که اسکن کد دارند !


Programmer
14 October 2005, 04:16 PM
در دلفی یکی از رویدادهای فرم OnKeyPress است ،که فشرده شدن یکی از کلیدهای کاراکتری کیبورد را تشخیص داده و میتواند آن کاراکتر را برگرداند.
اما برای تشخیص کلیدهایی که اسکن کد دارن مثلآ کلیدهای جهتی و تابعی (F1,F2,...) باید چه کار کنیم؟

Programmer
14 October 2005, 05:14 PM
مثلآ کلید F1 دارای اسکن کد است. برای تشخیص این کلید ها در سی پلاس پلاس دو بار از تابع Getch استفاده میکردیم.اگر این تابع صفر را بر گرداند به این معنی است که کلید اسکن کد دارد و Getch بعدی کد کلید را برمیگرداند!
در پاسکال هم اگه حافضه ام یاری کنه تابع Readkey این کار رو می کرد.
(البته در ورژن های تحت داس)
__________________________________________________ _________________________________
در دلفی همچین توابعی داریم ؟

با تابع API ی GetKeystate یه کم مشکل دارم !!!

Dokht Esmati
15 October 2005, 10:32 PM
در رویدادِ موردِ بهس ، یک متقییر به نام ِ Key وجود داره ، که شما میتونید از اون استفاده کنید.
برای لیستِ کاملِ کدهای کلید ها در اسکی ، Win32 : Virtual Key Code و DXD3 به پیوست مراجعه کنید.
(پسوندِ فایل ها رو به RAR تقییر بدید.)
مسلن باید بنویسید :
If Key=VK_F12 The DoIt;

Programmer
16 October 2005, 10:55 AM
وقتی از Vitual Key ها استفاده میکنم یعنی در شرط Key=VK_F1 خطای Incompatible Types
میده ! نوع کاراکتر با Virtual Key ها متناسب نیست !!!

Dokht Esmati
16 October 2005, 02:16 PM
Key از نوع ِ Virtual Key هاست و الان هم که امتهان کردم کار میکنه. دقت کنید!

Programmer
16 October 2005, 06:09 PM
آقای دخت عصمتی
من از تابع OnKeyPress استفاده میکردم که پارامتر دوم اون Key از نوع Char بود !
الآن فهمیدم باید از تابع OnKeyDown (یا OnKeyUp) استفاده کنم که پارامتر دوم آنها Key از نوع Word است که با
نوع VirtualKey ها یکی است .