PDA

View Full Version : کنترل Edit برای مقادیر ریالی ( دریافت رایگان )



vesal
جمعه 09 آذر 1386, 15:15 عصر
امروز مشغول کار روی پروژم بودم که به یه کنترل Edit احتیاج پیدا کردم که مقادیر ریالی رو نشون بده. یه سر رفتم سراغ سایت Torry یه کامپوننت بود که با یه کم دستکاری نسبتا به درر بخور شد. حالا میزارم اینجا شما هم خواستید استفاده کنید

Cave_Man
جمعه 09 آذر 1386, 15:55 عصر
موقع تایپ رقم ها رقم ها بصورت سه تا سه تا جدا میشن یا فقط با خروج Focus این Format ایجاد میشه؟

vesal
جمعه 09 آذر 1386, 16:03 عصر
موقع تایپ رقم ها رقم ها بصورت سه تا سه تا جدا میشن یا فقط با خروج Focus این Format ایجاد میشه؟

خوب متاسفانه این مشکل هست، حالا اگه کسی حال داشت اینم حل کنه

SYNDROME
جمعه 09 آذر 1386, 19:15 عصر
موقع تایپ رقم ها رقم ها بصورت سه تا سه تا جدا میشن یا فقط با خروج Focus این Format ایجاد میشه؟
می توانید خودتان در رویداد Onchange مربوط به Edit خود دلفی این کار به راحتی انجام دهید و نیازی به کامپونتهای نوشته شده هم نیست.
موفق باشید

Cave_Man
جمعه 09 آذر 1386, 20:47 عصر
می توانید خودتان در رویداد Onchange مربوط به Edit خود دلفی این کار به راحتی انجام دهید و نیازی به کامپونتهای نوشته شده هم نیست.
موفق باشید
فدات شم لازم به گفتن نبود ولی اگه این کامپوننت مجانی باشه واین کار رو هم انجام بده ترجیح میدم از اون استفاده کنم تا کد بنویسم. حالا شما لطف کن یه کامپوننت بنویس که این کار رو بکنه:چشمک:

SYNDROME
جمعه 09 آذر 1386, 22:56 عصر
فدات شم لازم به گفتن نبود ولی اگه این کامپوننت مجانی باشه واین کار رو هم انجام بده ترجیح میدم از اون استفاده کنم تا کد بنویسم.

استفاده از کامپونتهای آماده خوب است ولی باعث می شود که شما نتوانید دلفی خود را از یک ورژن به ورژن دیگر انتقال دهید.(من به خاطر اینکه در کل برنامه ای که نوشتم فقط از یک کامپونت آماده استفاده کردم با کمی زحمت توانستم از دلفی 7 به دلفی 2007 استفاده کنم)


حالا شما لطف کن یه کامپوننت بنویس که این کار رو بکنه:چشمک:

شما حتی بدون کامپونت هم می توانید این کار را بکنید و فقط با یک تابع در Onchange را مدیریت کنید.(اگر این کامپونت برای شرکت نبود حتماً قرار می دادم.)
موفق باشید

vcldeveloper
شنبه 10 آذر 1386, 03:10 صبح
استفاده از کامپونتهای آماده خوب است ولی باعث می شود که شما نتوانید دلفی خود را از یک ورژن به ورژن دیگر انتقال دهید.
این مسئله معمولا زمانی مطرح میشه که شما کامپوننت را بدون سورس داشته باشید.

SYNDROME
شنبه 10 آذر 1386, 07:11 صبح
این مسئله معمولا زمانی مطرح میشه که شما کامپوننت را بدون سورس داشته باشید.
کاملا حرف شما درست است.
ولی بعضی وقتها همین کامپونتهای با سورس هم کار نمی کند و مجبور می شوید که تغییراتی کوچکی در سورس بدهید که خود من به این موضوع بر خورده ام و اگر سورس آن سنگین باشد واقعا مشکل بزرگی خواهد شد.
موفق باشید

mortezakiaee
شنبه 10 آذر 1386, 08:49 صبح
می توانید خودتان در رویداد Onchange مربوط به Edit خود دلفی این کار به راحتی انجام دهید و نیازی به کامپونتهای نوشته شده هم نیست.
موفق باشید
کلک مرغابیه ولی امتحانش کنید.:خجالت:
تو این رویداد یه edit روی edit مورد نظر ایجاد کنید و text اونو با currtostrf مقدار دهی کنید.onexit هم اونو free کنید.

SYNDROME
شنبه 10 آذر 1386, 15:12 عصر
کلک مرغابیه ولی امتحانش کنید.:خجالت:
تو این رویداد یه edit روی edit مورد نظر ایجاد کنید و text اونو با currtostrf مقدار دهی کنید.onexit هم اونو free کنید.
دوست عزیز فکر نمی کنید این کار کمی نسبت به جدا کردن در OnChange سخت تر است.
موفق باشید

mortezakiaee
شنبه 10 آذر 1386, 15:51 عصر
دوست عزیز فکر نمی کنید این کار کمی نسبت به جدا کردن در OnChange سخت تر است.
موفق باشید
راستش اگه منظورتون کدی مثل

Edit2.Text:=CurrToStrf(StrToInt(Edit2.Text),ffCurr ency,0 );
است که منطقا درست نیس. ولی اگه چیز دیگه ای استفاده می کنید به ما هم بگید تا یاد بگیریم

vesal
شنبه 10 آذر 1386, 16:55 عصر
کاملا حرف شما درست است.
ولی بعضی وقتها همین کامپونتهای با سورس هم کار نمی کند و مجبور می شوید که تغییراتی کوچکی در سورس بدهید که خود من به این موضوع بر خورده ام و اگر سورس آن سنگین باشد واقعا مشکل بزرگی خواهد شد.
موفق باشید

به طور تمام و کمال مخالفم

hamide_kh
شنبه 10 آذر 1386, 21:32 عصر
سلام
من کامپوننتی می خوام که در editbox اعداد را 3 رقم 3 رقم در رویداد onchange جدا کنه( البته اینم بگم که در برنامه ام چندین edit هست که در رویدادonexit همه editها کدی هست که مقدار editها را با هم جمع می کنه )
......از کامپوننت معرفی شده در اول صفحه هم استفاده کردم ولی وقتی خاصیت decimal اونا 0 می کردم وقتی رویداد onexit رخ می ده یکی از رقمهاش را کم میکنه یعنی اگه بدم 1000 وقتی از ادیت باکس خارج میشم 100 میشه.....منتظرم
فوری........

vesal
شنبه 10 آذر 1386, 21:34 عصر
سلام
من کامپوننتی می خوام که در editbox اعداد را 3 رقم 3 رقم در رویداد onchange جدا کنه( البته اینم بگم که در برنامه ام چندین edit هست که در رویدادonexit همه editها کدی هست که مقدار editها را با هم جمع می کنه )
......از کامپوننت معرفی شده در اول صفحه هم استفاده کردم ولی وقتی خاصیت decimal اونا 0 می کردم وقتی رویداد onexit رخ می ده یکی از رقمهاش را کم میکنه یعنی اگه بدم 1000 وقتی از ادیت باکس خارج میشم 100 میشه.....منتظرم
فوری........

این اشکال به خاطر اینه که به جای Tab برای خروج از Enter استفاده کرد

szabeh
شنبه 10 آذر 1386, 21:37 عصر
دوستان من فکر میکنم کامپوننت Ehlib این کار را انچام میده

vesal
شنبه 10 آذر 1386, 21:38 عصر
دوستان من فکر میکنم کامپوننت Ehlib این کار را انچام میده

واسه من که انجام نداد چه جوریه؟

hosein.jozi
شنبه 10 آذر 1386, 22:16 عصر
آره کار می کنه

hamide_kh
شنبه 10 آذر 1386, 23:39 عصر
میشه در مورد کامپوننت ehlib بیشتر توضیح بدید
من چه کار کنم

dkhatibi
یک شنبه 11 آذر 1386, 07:29 صبح
دو خط اول اینجا (http://www.ehlib.com/)کاملا واضج می گه چیه!

SYNDROME
یک شنبه 11 آذر 1386, 17:19 عصر
راستش اگه منظورتون کدی مثل

Edit2.Text:=CurrToStrf(StrToInt(Edit2.Text),ffCurr ency,0 );

است که منطقا درست نیس. ولی اگه چیز دیگه ای استفاده می کنید به ما هم بگید تا یاد بگیریم

نه منظورم این نیست.
من خودم کامپونتی را درست کردم که در Onchange کامپونت که از روی Edit خود دلفی ساخته شده است این کار را می کند و تا به این لحظه کاملا درست و بدون خطا کار کرده است و در لحطه ورود 3 رقم 3 رقم جدا می کند.


به طور تمام و کمال مخالفم(من خودم با دلفی 2007 کار می کنم و دقیقاً به این مشکلات بر خورده ام و مجبور شدن کامپونت را کمی تغییر دهم)

حداقل دلیل مخالفت خود را بنویسید.
موفق باشید

vesal
دوشنبه 12 آذر 1386, 00:04 صبح
حداقل دلیل مخالفت خود را بنویسید.
موفق باشید

فکر کنم موضوع تاپیک چیز دیگه ای بود. اگر دوست داشتی در مورد ارتقا نسخه دلفی بحث کنی یه تاپیک جدید بزنید لطفا، من هم سعی میکنم بیام جواب بدم

ali_sayahiyan
یک شنبه 19 خرداد 1387, 18:54 عصر
اینم یک کامپوننت برای مقادیر ریالی
فرصت نکردم داخلش توضیحات بگذارم اگر جای سوالی بود در خدمتم


unit ASDEdit;
interface
uses
SysUtils, Classes, Controls, StdCtrls;
type
TASDNumEdit=class(TcustomEdit)
private
FinputError:TNotifyEvent;
protected
procedure SetValue(Value:integer);
function GetValue:integer;
procedure KeyPress(var key:char);override;
public
//constructor Create(Owner:TComponent);override;
published
property OnInPutError :TNotifyEvent read FinputError Write FinputError;
property Value:Integer read GetValue Write SetValue default 0;
property Anchors;
property AutoSelect;
property AutoSize;
property BevelEdges;
property BevelInner;
property BevelKind default bkNone;
property BevelOuter;
property BiDiMode;
property BorderStyle;
property CharCase;
property Color;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property HideSelection;
property ImeMode;
property ImeName;
property MaxLength;
property OEMConvert;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PasswordChar;
property PopupMenu;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
type
TASDEdit = class(TASDNumEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
procedure Change;override;
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Barnamenevis.Org', [TASDEdit]);
end;
//----------------TASDNumEdit Functions ----------------------------------
Function TASDNumEdit.GetValue:integer;
begin
result:=StrtoInt(Text);
end;
procedure TASDNumEdit.SetValue(Value:Integer);
begin
Text:=inttostr(Value);
end;
procedure TASDNumEdit.KeyPress(var key:char);
begin
if not(key in ['0'..'9']) and not(key=#8) then
begin
key:=#0;
if Assigned(FinputError) then
//error(self);
end
else
inherited
end;
//---------------------End of TASDNumEdit Functions---------------
Function StToFlSk(s:String):Extended;
var
s1:string;
i:Integer;
begin
s1:='';
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then
s1:=s1+s[i];
result:=StrToFloat(s1);
end;
procedure TASDEdit.Change;
var
CursorPos,LengthDiff:integer;
begin
if Text<>'' then
begin
if Assigned(Parent) then
begin
CursorPos:=SelStart;
LengthDiff:=length(Text);
Text:=FormatFloat('#,###',StToFlSk(Text));
LengthDiff:=length(Text)- LengthDiff;
selstart:= CursorPos+LengthDiff
end;
end;
inherited;
end;

end.

پایدار باشید