PDA

View Full Version : ادیتی که فقط اعداد درونش تایپ شود



persia_hrn
پنج شنبه 03 مرداد 1392, 03:39 صبح
با سلام به همه دوستان .
من می خوام ببینم میشه کاری کرد که تایپ کردن توی ادیت فقط مختص اعداد بشه ؟
یعنی ادیتی داشته باشم که غیر از عدد چیزی توش تایپ نشه .

در ضمن این کار فقط می خوام با کامپوننت ادیت انجام بشه .

ممنون میشم راهنماییم کنید .

godofphp
پنج شنبه 03 مرداد 1392, 03:45 صبح
Do not Forget Like


procedure TForm1.Button1Click(Sender: TObject);
var
myfloat: double;
begin
if TryStrToFloat(Edit1.Text, myfloat) then
DataModule.tbTableNumber.Value := myfloat
else
ShowMessage('Incorrect value.');
end;

persia_hrn
پنج شنبه 03 مرداد 1392, 04:12 صبح
سلام دوست من ، خیلی لطف کردی که الان جوابمو دادی ولی دوتا مشکل دارم ،
1 - من از دلفی 5 استفاده می کنم که دستور TryStrToFloat رو نشناخت .
2 - من نمی خوام بعد از تایپ چک کنم که توی ادیتم چی نوشته ، میخوام همزمان با تایپ اگر غیر از عدد چیزی تایپ شد توی ادیتم وارد نشه .

البته من یه کامپوننت از سری کامپوننت های TMS دارم که این کارو میکنه ولی مشکلم اینه که ابزارش عیناً شبیه ادیته ولی ادیت نیست .
برای من واجبه که ابزارم ادیت باشه .

ممنون از کمکتون .

persia_hrn
پنج شنبه 03 مرداد 1392, 04:21 صبح
این برنامه ابزاری داره که شبیه ادیته و فقط عدد درونش تایپ میشه .
ممنون میشم اگه چکش کنید ، من میخوام این کار رو با ادیت انجام بدم .

persia_hrn
پنج شنبه 03 مرداد 1392, 05:35 صبح
آقا مشکلم با یه دستور ساده حل شد !
:متعجب:

omidsistani
پنج شنبه 10 مرداد 1392, 10:46 صبح
چه دستوری داداش؟

gholami146
پنج شنبه 10 مرداد 1392, 11:21 صبح
دوست من این روش دوست ما هم جواب میده
ولی خوب نیست
در روال مربوط به OnKeyPress کلید های وارده رو کنترل و چک کنید اگر کد وارده مخالف با کد اسکی اعداد 0 تا 9 هست عملیات رو با استفاده از دستور Abourt لغو کنید با این حساب فقط کار بر زمانی که اعداد رو وارد کنه قادر به دیدن اون در داخل ادیت باکس هست
اگر خواستید کدش رو براتون بزارم

gholami146
پنج شنبه 10 مرداد 1392, 12:02 عصر
If Not(((Key>='0')and(Key<='9')) or (Key=#8) or (Key=#13)) Then
Begin
Abort;
End Else
Begin
IF Key=#13 Then
Begin
Key:=#0;
SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
End;
End;

gholami146
پنج شنبه 10 مرداد 1392, 12:04 عصر
در کدی که قرار دادم فقط اعداد در کادر وارد میشه و زمانی که کاربر کلید اینتر رو بزنه به کنترل بعدی که دارای Order Number بعدی فوکاس میشه

Valadi
پنج شنبه 10 مرداد 1392, 13:06 عصر
اين كد هم خيلي كوتاهه
procedure TForm5.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
IF Not(Key In [#8,'0'..'9']) Then
Key := #0;
end;

بهروز عباسی
پنج شنبه 10 مرداد 1392, 14:09 عصر
با فرض این که اسم Edit مورد نظر شما Edit1 باشه با همچین کدی میشه کاری کرد که فقط عدد بگیره ،البته باید این کد رو در رویداد onCreate فرم مربوطه بنویسی .

SetWindowLong(Edit1.Handle, -16, GetWindowLong(Edit1.Handle, -16) or $2000);

پ.ن : چون سوال تکراری بود و قبلا هم بحث شده (لطفاً ابتدا جستجو کنید)،ولی پاسخ گرفت حذف نمیشه و تاپیک قفل میشه .