PDA

View Full Version : سوال: تشخیص کلید فشرده شده روی کیبورد



persia_hrn
جمعه 26 خرداد 1396, 12:42 عصر
با سلام خدمت همه دوستان عزیز .

قبل از اینکه سوالم رو بپرسم این توضیح رو بدم که در مورد سوالم خیلی جستجو کردم اما موفق به رفع مشکلم نشدم و این تاپیک رو ایجاد کردم .

سوالم اینه که چطور میشه تشخیص داد که کلید ENTER فشرده شده روی کیبرد جزو کلیدهای ماشین حساب است یا نه ؟

خب این سوال در تاپیک زیر جواب داده شده :
http://barnamenevis.org/showthread.php?209792-%D8%B3%D9%88%D8%B1%D8%B3%D9%87%D8%A7%D9%8A-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%D9%8A&p=1742707&viewfull=1#post1742707

البته تاپیک فوق درست عمل می کنه ولی نه زمانی که فکوس شما روی مثلاً یه MEMO قرار داشته باشه !!!!

دقیقاً مشکل من الان همینه که میخوام وقتی فکوس من روی MEMO هست اگر کلید ENTER از مجموعه کلیدهای ماشین حساب کیبرد فشرده شد فکوس رو از MEMO به OBJECT بعدی روی فرم انتقال بدم و اگر کلید ENTER اصلی فشرده شد همون اتفاق عادی افزوده شدن خط به ممو انجام بشه .

ممنون از دوستان .

persia_hrn
جمعه 26 خرداد 1396, 13:59 عصر
با سلام مجدد ، جواب سوالمو پیدا کردم و جوابش رو هم میذارم شاید به درد کسی بخوره


uses
StdCtrls;

type
TMemo = class(StdCtrls.TMemo)
private
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
end;

TForm1 = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
KD_IS_EXTENDED = 1 shl 24;

procedure TMemo.WMKeyDown(var Message: TWMKeyDown);
begin
if (Message.CharCode=VK_RETURN) And ((KD_IS_EXTENDED and Message.KeyData) <> 0) Then
begin
عملیات مورد نظرتون
Exit;
end;
inherited;
end;

فکر نمیکردم انقدر راحت باشه :لبخند: