Delphi:设置DisplayFormat的Edit控件
来源:优易学  2011-9-10 17:57:48   【优易学:中国教育考试门户网】   资料下载   IT书店

 欢迎测试!
  liang_z@163.net
  unit OWEdit;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
  type
  TInputDataType = (tFloat,tInteger,tAll);
  type
  TOWEdit = class(TEdit)
  private
  { Private declarations }
  FCanvas : TCanvas;
  FDataType: TInputDataType;
  FAlignment : TAlignment;
  FDisplayFormat : String;
  FDeciNum : Word;
  FDisplayText : String;
  procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  protected
  { Protected declarations }
  procedure SetDataType(Value:TInputDataType);
  procedure SetAlignment(Value:TAlignment);
  procedure SetDisplayFormat(Value:String);
  procedure ClipPaste(var M:TMessage); Message WM_PASTE;
  procedure PaintWindow(DC: HDC); override;
  procedure Paint; virtual;
  procedure WMExit(var Message:TWMKillFocus);Message WM_KILLFOCUS;
  procedure GetDisplayText;
  procedure ShowDisplayText;
  function GetDeciLast:integer;
  public
  { Public declarations }
  OldText : String;
  property Text;
  property Canvas: TCanvas read FCanvas;
  constructor Create(AOwner: TComponent); override;
  destructor Destroy(); override;
  procedure KeyPress(var Key: Char); override;
  procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  published
  { Published declarations }
  property DataType: TInputDataType read fDataType write SetDataType default tFloat;
  property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
  property DisplayFormat: string read FDisplayFormat write SetDisplayFormat;
  end;
  procedure Register;
  implementation
  procedure Register;
  begin
  RegisterComponents(\'Ourway\', [TOWEdit]);
  end;
  constructor TOWEdit.Create(AOwner: TComponent);
  begin
  inherited Create(AOwner);
  Text := \'0\';
  FCanvas := TControlCanvas.Create;
  TControlCanvas(FCanvas).Control := Self;
  FDeciNum := 9999;
  end;
  destructor TOWEdit.Destroy();
  begin
  FCanvas.Free;
  inherited Destroy();
  end;
  procedure TOWEdit.SetDataType(Value:TInputDataType);

 begin
  If Value<>fDataType Then
  begin
  fDataType := Value;
  Case Value of
  tAll: Text := \';
  tFloat: Text:=\'0.0\';
  tInteger: Text:=\'0\';
  end;
  ShowDisplayText;
  Invalidate;
  end;
  end;
  procedure TOWEdit.SetAlignment(Value:TAlignment);
  begin
  If Value<>FAlignment Then
  begin
  FAlignment := Value;
  Invalidate;
  end;
  end;
  procedure TOWEdit.SetDisplayFormat(Value: string);
  begin
  If Value<>FDisplayFormat Then
  begin
  FDisplayFormat := Value;
  if Trim(Value)<>\' then
  FDeciNum := Length(Value)-Pos(\'.\',Value)+1
  else
  FDeciNum := 9999;
  ShowDisplayText;
  Invalidate;
  end;
  end;
  procedure TOWEdit.KeyDown(var Key: Word; Shift: TShiftState);
  begin
  if Key = VK_DELETE then
  if Self.SelStart=pos(\'.\',Self.Text)-1 then
  Key := 0;
  inherited KeyDown(Key,Shift);
  end;

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训