edit控件如何实现里面的内容右对齐,例如输入金额。

解决方案 »

  1.   

    这个简单,下面的控件就可实现水平对齐!unit TranEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics;type
      TTranEdit = class(TEdit)
      private
        { Private declarations }
        FAlignment: TAlignment;  //水平对齐
        procedure SetAlignment(Value: TAlignment);
      protected
        { Protected declarations }
        procedure CreateParams(var Params: TCreateParams); override;
      public
        { Public declarations }
       constructor Create(AOwner: TComponent); override;
        destructor Destroy(); override;
      published
        { Published declarations }
         property Alignment: TAlignment Read FAlignment Write SetAlignment Default taLeftJustify;
      end;procedure Register;implementationconstructor TTranEdit.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
    end;destructor TTranEdit.Destroy();
    begin
      FCanvas.Free;
      inherited Destroy();
    end;procedure TTranEdit.SetAlignment(Value: TAlignment);
    begin
      if Value <> FAlignment then
      begin
        FAlignment := Value;
        RecreateWnd;
      end;
    end;procedure TTranEdit.CreateParams(var Params: TCreateParams);
    const
      Alignments: array[TAlignment] of word = (DT_LEFT, DT_RIGHT, DT_CENTER);
    begin
      inherited CreateParams(Params);
      with Params do
      begin
        Style := Style or Alignments[FAlignment];
      end;
    end;procedure Register;
    begin
      RegisterComponents('Standard', [TTranEdit]);
    end;end.