PDA

View Full Version : یک edit با قابلیت جدا کردن سه رقمی اعداد



mortezakiaee
دوشنبه 08 بهمن 1386, 09:41 صبح
سلام
یه کامپوننت برای این که فقط اعداد رو بشه توش وارد کرد وجود داره اما قابلیت این که اونارو 3 رقم 3رقم جدا کنه نداره. با یکم دستکاری سعی کردم اونو به این شکل در بیارم

unit CurrencyEdit;


interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;


type
TCurrencyEdit = class(TEdit)
private
{ Private declarations }
function getvalue:Extended;
procedure setvalue(NewVal:Extended);

protected
{ Protected declarations }
procedure KeyPress(var Key: Char); override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property Value: Extended read GetValue write SetValue;
property Anchors;
property AutoSelect;
property AutoSize;
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;

procedure Register;

implementation
var tempvalue: Extended;
procedure Register;
begin
RegisterComponents('Samples', [TCurrencyEdit]);
end;




{***************** Methods *******************}
constructor TCurrencyEdit.create(Aowner:TComponent);
begin
inherited ;
text:='0'+decimalseparator+'0';
tempvalue:=0;
end;

function TCurrencyEdit.getvalue:Extended;
begin
try
{if text='' then text:='0';}
if text='' then result:=0
else result:=tempvalue;
except
on E: EConvertError do
begin
ShowMessage(E.ClassName + #13 + E.Message);
result:=0;
end;
end;
end;

procedure TCurrencyEdit.Setvalue(Newval:extended);
begin
tempvalue:=newval;
Text:=CurrToStrf(tempvalue,ffCurrency,0);
end;

procedure TCurrencyEdit.KeyPress(var Key: Char);
begin
if not (Key in ['+', '-', DecimalSeparator, '0'..'9', #0..#31] )
or ((key = decimalseparator) and (pos(decimalseparator,text)>0) )
then
begin
Key := #0;
MessageBeep(MB_ICONEXCLAMATION);
end
else inherited KeyPress(Key);
end;

end.اما نیجه مورد نظر رو نمی ده. لطفا راهنمایی کنید.
با تشکر

mortezakiaee
سه شنبه 09 بهمن 1386, 13:37 عصر
کسی چیزی به ذهنش نمی رسه؟

M A R S H A L
سه شنبه 09 بهمن 1386, 14:48 عصر
سلام ،
دوست عزیز این فایل ضمیمه شده ، یک کنترل نیست. اما با استفاده از این تابع براحتی میتونید اینکار رو انجام دهید

mortezakiaee
سه شنبه 09 بهمن 1386, 17:07 عصر
دوست عزیز
مشکل من جدا کردن اعداد نیست. مشکل اینه که :
1- میخوام همزمان با وارد کردن اعداد سه رقم سه رقم جدا بشه.
2- ارقام خاصیت عددیشونو از دست ندن. یا حداقل تو یه محل عدد اصلی ذخیره بشه

echoes
چهارشنبه 10 بهمن 1386, 01:11 صبح
http://forum.p30world.com/showthread.php?t=138580&highlight=Professional+Computation+Suite

یه سر بهش بزن