怎样让TEdit中的文字中间对齐或右对齐?

解决方案 »

  1.   

    右对齐
    覆盖 TEdit的createparams方法(实际为覆盖TWinControl的CreateParams方法)
    type
      TREdit=class(tedit)
      protected
        procedure createparams(var Params: TCreateParams);override;
      end;procedure TREdit.createparams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style:=Params.Style or ES_RIGHT;
    end;
      

  2.   

    中 :
    换为 : Params.Style:=Params.Style or ES_CENTER  ;
      

  3.   

    你或者可以自己写个控件或类,
    unit EditType;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, StdCtrls;type
      TEditType = class(TCustomEdit)
      private
        FAlignment:TAlignment;
      protected
        procedure CreateParams(var Params: TCreateParams); override;
      public
        Procedure SetAlignment(const value:TAlignment);
      published
        property Alignment  : TAlignment read FAlignment write SetAlignment default taLeftJustify;
        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;
    procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('CzqTools', [TEditType]);
    end;procedure TEditType.CreateParams(var Params:TCreateParams);
    const
      Alignments: array[TAlignment] of DWORD =(ES_LEFT, ES_RIGHT, ES_CENTER);
    begin
      inherited CreateParams(Params);
      params.Style:=params.Style or Alignments[FAlignment];
    end;
    procedure TEditType.SetAlignment(const value:TAlignment);
    begin
      if FAlignment <> Value then
      begin
        FAlignment := Value;
        RecreateWnd;
      end;
    end;end.
      

  4.   

    其实就是一个自定义Type
      TREdit=class(TEdit)
      protected
        procedure createparams(var Params: TCreateParams);override;
      end;
      TForm1 = class(TForm)
        ...
      end;var
      Form1: TForm1;
    implementation
    {$R *.dfm}procedure TREdit.createparams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style:=Params.Style or ES_RIGHT  ;  //右对齐
      //Params.Style:=Params.Style or ES_CENTER  ; //中对齐
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      with TREdit.Create(application) do
      begin
        name := 'myedit' ;
        Caption := 'Right/Center' ;
        left:=100;
        top:=100;
        Height := 100 ;
        Width := 100 ;
        parent:=Form1;
        visible:=true;
      end;
    end;
      

  5.   

    谢谢楼上的各位
    原来是我没有和设parent