PDA

View Full Version : گفتگو: وارد نمودن فقط عدد در يك Edit



rezamahdizadeh
چهارشنبه 11 دی 1387, 22:20 عصر
چه كدي بايد نوشت كه در يك Edit بتوان فقط اعداد شامل اعداد صحيح يا اعشاري ، مثبت يا منفي وارد نمود؟

AliReza Vafakhah
پنج شنبه 12 دی 1387, 00:28 صبح
دوست عزیز ببین این به درد می خوره



procedure TFrmMain.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ((key in ['0'..'9'])or (Key=#8) or (key in [#37..#40]) or (key=#45)) then
else
begin
key:=#0;
beep;
end;
end

البته اگر می خواهید از . در اعداد اعشار استفاده کنید باید به این شکل یک تابع هم اضافه کنید و یه تغییری هم به کد بالا بدهید



procedure TFrmMain.Edit1KeyPress(Sender: TObject; var Key: Char);
begin

if (FindDot(Edit1.Text) and (key=#46)) then
key:=#0;

if ((Edit1.Text ='')and(key=#46))then
begin
key:=#0;
beep;
Exit;
end;

if ((key in ['0'..'9'])or (key=#46) or (key=#45) or (Key=#8) or (key in [#37..#40])) then
else
begin
key:=#0;
beep;
end;
end;

تابع FindDot برای اینکه بیش از یک . (نقطه ) وارد Edit1 نشود.


function TFrmMain.FindDot(Const TxtBox: String): Boolean;
var
i:integer;
begin

for i:= 1 to length(TxtBox) do
begin
if (AnsiMidStr(TxtBox,i,1)='.') then
begin
Result:=True;
Exit;
end;
end;

Result:=False;
end;

کد های اسکی



بک اس پیس =8
37 تا 40= کلید های جهت نما
.=46
-=45
45
موفق باشی

Nima NT
چهارشنبه 18 دی 1387, 02:04 صبح
میتونی از کامپوننت Numeric Edit از سریABF یا LMD هم استفاده کنی.