Mirror

Change the alignment for TEdit (Views: 709)


Problem/Question/Abstract:

How can I change the alignment for my TEdit?

Answer:

Sometimes you need change the text alignment in standard TEdit component. For some reason the developers in Microsoft decided, that for data editing in single line we do not need to change alignment and haven't provided such possibility:(

But sometimes I need it! For example, I like view a numbers with right alignment...

If you need it too then this delphi tip for you:

type
  TEditAlignment = class(TCustomEdit)
  protected
    { Protected declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TEditAlignment.CreateParams(var Params: TCreateParams);
const
  Alignments: array[TAlignment] of Longint =
  (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
  inherited CreateParams(Params);

  Params.Style := Params.Style or ES_MULTILINE or
    Alignments[FAlignment];
end;

In Windows 98 you can set a Params.Style without ES_MULTILINE flag and it too will work.

Also after such edit control can't correctly work with PasswordChar <> #0 (but I think for password input it's not necessary to change alignment).

PS: remark, that after that your TEdit is not "real" edit control - now is a control like "memo" but single line... Of course, you can use a standard TMemo component with height equal to one line.

Component Download: http://www.geocities.com/mshkolnik/download/edittype.zip

<< Back to main page