PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : محدود کردن تکست باکس به اعداد



sms582002
16 / February / 1970, 11:36 AM
مرسی مهندس. برای اینکه اعداد را 3 رقم 3 رقم با ویرگول جدا بشن راه حلی وجود داره؟

b_itman_b
16 / February / 1970, 11:36 AM
با تشکر از مدیرجون با اجازه ایشون یکن توضیح بدم.
تابع اولی (delete_kama) رو که باید در محل implementation یا همون imp بنویسیم برای اینه که مثلا وقتی عدد 1234 رو نویشتیم و تبدیل شد به 1،234 ، حالا وقتی میخوایم عدد 567 رو هم بهش اضافه کنیم ، بیاد و اول کامای اولی رو حذف کنه تا طول واقعی رشته بدست بیاد که بتونه سه رقم سه رقم جداش کنه.برای حالت 1،234،567 هم همینطوره و باید تمامی کاما ها حذف بشه و عملیات جداسازی از اول شروع بشه انگار که یک دفعه عدد 1234567 رو بهش دادیم نه به صورت کاراکتر به کاراکتر.
در مورد دستوره* delete(s,p,1) هم که میاد و از رشته s له اندازه 1 واحد* و از کاراکتر pام پاک میکنه.در مورد دستوره
insert(s,mystr,i-2)هم باید گفت که کاراکتر یا رشته S رو در رشته MYSTR در محل کاراکتر i-2 اضافه میکنه و وقتی این کار رو کرد مکان نما به همون محل انتقال می یابد و با دستور
DBEdit1.SelStart:=length(mystr) میاد و مکان نما رو به محل کاراکتر length(mystr) میبره که در اینجا میشه طول رشته یا همون آخره رشته که کاراکتر های بعدی طبق روال عادی به آخر رشته اضافه شوند.فقط حکم دستوره mystr:=mystr رو نمی فهمم.با تشکر و عذر خواهی از اساتید

admin
16 / February / 1970, 11:36 AM
برای محدود کردن یک تکست باکس به اعداد از کد زیر استفاده می شود ، ضمنا این کد برای تمامی*آبجکت های*همسان هم کاربرد دارد ...

کد:



SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong (Edit1.Handle,GWL_STYLE)or ES_NUMBER);


کد بالا بایستی در رویداد FormCreate* درج گردد.

admin
16 / February / 1970, 11:36 AM
سلام.بله
ابتدا تابع حذف کاما رو* به پروژه اضافه کنید.
روش استفاده :
ابتدا تابع زیر را در قسمت imp پروژه قرار دهید :

کد:



function delete_kama( s : String):string;

var p:Integer;
begin
for p:=1 to length(s) do
if s[p]="," then
delete(s,p,1);
delete_kama:=s;
end;





سپس به صورت زیر مثلا در یک DBEdit از آن استفاده می کنیم و همچنین 3 عدد 3 عدد ، اعداد را جداسازی می کنیم:
کد:


procedure TMain.DBEdit1Change(Sender: TObject);
var i:integer;mystr,s:string;
begin
s:=",";
if DBEdit1.Text<>&quot;&quot; then
begin
mystr:=&quot;&quot;;
mystr:=delete_kama(DBEdit1.Text);
i:=length(mystr);
while i>3 do
begin
insert(s,mystr,i-2);
i:=i-3;
end;
mystr:=mystr;
DBEdit1.Text:=mystr;
DBEdit1.SelStart:=length(mystr);
end;

end;



موفق و موید باشید

admin
08 / August / 2016, 09:02 PM
البته روش زیر هم هست که روشی استاندارد و استفاده از توابع خود دلفی میباشد.


FormatCurr('#0,',StrToCurr(edit1.text));