PDA

View Full Version : تبدیل کد به تابع



Delphi7_love
چهارشنبه 10 شهریور 1389, 03:37 صبح
با سلام
من از یه تکه کد برای جدا کردن سه رقم سه رقم در ادیت استفاده میکنم حالا واسه جلوگیری از کدنویسی اضافه میخوام یه تابع بنویسم که برای هر ادیت حداقل کدنویسی رو داشته باشه
لطفا راهنماییی نمایید.
در ضمن در رویداد Onchange باید باشه.

procedure TForm1.Edit1Change(Sender: TObject);
var
s:string;
i:Integer;
begin
s:='';
if Edit1.Text>''then
begin
for i:=0 to Length(Edit1.Text)do
if Edit1.Text[i]in['0'..'9']then
s:=s+edit1.Text[i];
Edit1.Text:=FormatFloat('#,',StrToInt64(s));
Edit1.SelStart:=Length(Edit1.Text)+1;
end;
end;
میخوام مثلا در رویداد onchange مربوط به هر ادیت فقط بنویسم :
addcoma;
و اون تابع خودش تشخیص بده کدوم ادیت باید سه رقم سه رقم شه
اگه امکانش نیست ، بفرمایید از چه روشی استفاده کنم
با تشکر

Felony
چهارشنبه 10 شهریور 1389, 05:14 صبح
کدتون ایراد داره و درست کار نمیکنه ( موقعیت کاماهای درج شده درست نیست ) ، من فقط کدتون رو طوری تغییر دادم تا بشه تو رویداد OnChange همه Edit ها ازش استفاده کرد :
Procedure AddComa(Sender: TObject);
var
s:string;
i:Integer;
begin
s:='';
if (Sender is TEdit) then
if TEdit(Sender).Text>''then
begin
for i:=0 to Length(TEdit(Sender).Text)do
if TEdit(Sender).Text[i]in['0'..'9']then
s:= s + TEdit(Sender).Text[i];
TEdit(Sender).Text:=FormatFloat('#,',StrToInt64(s) );
TEdit(Sender).SelStart:=Length(TEdit(Sender).Text) +1;
end;
end;
end;[/SOURCE]

به صورت زیر در رویداد onChange شئ Edit مورد نظر صداش بزنید :
AddComa(Sender);

SAASTN
چهارشنبه 10 شهریور 1389, 16:37 عصر
کار بهتر اینه که کدتون رو بصورتی که آقای تاجیک نوشتن تغییر بدین تا با Sender کار کنه و برای بقیه Edit ها بجای اینکه OnChange جدید ایجاد کنید فقط OnChangeشون رو با Edit1Change ست کنید. اینطوری اگه بخواین غیر از جداکردن ارقام کار دیگه ای هم بصورت کلی روی Edit ها انجام بدین فقط کافیه یک Procedure رو ویرایش کنید.