PDA

View Full Version : کمک در مورد onkeypress يك edit



ghafar.t.d
یک شنبه 15 خرداد 1384, 20:15 عصر
با سلام
توی خاصیت onkeypress مربوط به ادیت مثلا نوشه شده :
if key=chr (46) then ....
که کار خاصی بخواهیم با زده شدن کلیدی انجام بشه بعد از اینکه کلید زده شد کد اجرا میشه ولی همون کارکتر هم که کد اسکیش داده شده توی ادیت نشون داده میشه چطور میشه کاری کرد که با زدن کلید فقط کد مورد نظر اجرا بشه ولی کارکتر اون کلید نشون داده نشه؟
مثلا برای دکمه ضرب ماشین حساب وقتی * زده میشه ضرب انجام میشه ولی ستاره هم نشون می ده..

Mahdi_S_T
یک شنبه 15 خرداد 1384, 20:27 عصر
می تونی از کد زیر استفاده کنی :


if key=#13 then
key:=#0;

کد بالا با زدن اینتر هر کاری رو که بخوای انجام میده حالا میتونی تغییرات رو خودت بدی

babak_delphi
دوشنبه 16 خرداد 1384, 00:28 صبح
if Key = ## then
Key := #0;
your code


بجای ## کد اسکی کلید مورد نظر رو بنویس و بجای your code کد مورد نظرت رو
مثلا


edit1.text := mem1 * mem2;

Ali_Hashemi
دوشنبه 16 خرداد 1384, 13:30 عصر
:گیج:

اولا که اینو تو رویداد Onkeypress بنویس دوما اینکه این کد که من میگم همون کد babak_delphi
هست اما اون کار نمیکنه مگر اینکه Begin و End رو استفاده کنی.مثل کد زیر :


If Key = chr(102) Then
Begin
Key:=#0
{ your code
........
......
....
...
..
.}
End;


آخ یادم رفت بگم : این 102 که من نوشتم کد اسکی f هست
شما بنا به نیاز ت اونو تغییر بده.

ghafar.t.d
دوشنبه 16 خرداد 1384, 15:36 عصر
با سلام
ممنون از راهنمایی تون :موفق:
مشکل حل شد. باید خاصیت readonly ادیت false بشه و دیگه نیازی به key=#0 هم نداره تازه اگه این نوشته بشه کد عمل نمیکنه چون فرض میکنه هیچ کلیدی زده نشده.
خوب بگذریم..
کسی می دونه چطور میشه برای پرانتزها کد نوشت به طوری که توی جمع و ضرب و... اولویت ها رعایت بشه؟

ghafar.t.d
دوشنبه 16 خرداد 1384, 15:38 عصر
با سلام
ممنون از راهنمایی تون :موفق:
مشکل حل شد. باید خاصیت readonly ادیت true بشه و دیگه نیازی به key=#0 هم نداره تازه اگه این نوشته بشه کد عمل نمیکنه چون فرض میکنه هیچ کلیدی زده نشده.
خوب بگذریم..
کسی می دونه چطور میشه برای پرانتزها کد نوشت به طوری که توی جمع و ضرب و... اولویت ها رعایت بشه؟

ghafar.t.d
سه شنبه 17 خرداد 1384, 08:01 صبح
باسلام
راستی چطوری میشه توی ادیت از راست به چپ نوشت؟

Ali_Hashemi
سه شنبه 17 خرداد 1384, 09:24 صبح
سلام

برای اینکه از راست به چپ بنویسی خاصیت BiDiMode مربوط به Edit رو برابر با bdRightToLeft
قرار بده.

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

در ضمن این موضوع در کتاب "ساختمان داده ها در C " که تو دانشگاههای ایران تدریس میشه توضیح داده شده.