Thema: Delphi Text im TEdit mittig

Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: Text im TEdit mittig

  Alt 14. Sep 2006, 15:41
Hallo
es gibt da EM_SETRECTNP, geht allerdings nur, wenn das Edit multiline ist, oder bei einem Memo.

Delphi-Quellcode:
type
  TEditAlign = class(TEdit)
  private
    FAlignment: TAlignment;
    procedure SetAlignment(const Value: TAlignment);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Alignment: TAlignment read FAlignment write SetAlignment;
  end;

  TForm1 = class(TForm)
   ...
   private
    edit2:TEditAlign;
   ...
  end;

...

procedure TForm1.Button1Click(Sender: TObject);
Var R:Trect;
begin
  edit2:=TEditAlign.Create(self);
  edit2.Parent:=self;
  edit2.Alignment:=taCenter;
  edit2.Top:=20;
  edit2.Left:=20;
  edit2.Height:=50;
  edit2.Width := 150;
  edit2.Text:='Zentriert';

  R := Rect(1, 16, Edit2.Width - 2, Edit2.Height); //kann man ja noch richtig ausmitteln ;-)
  SendMessage(Edit2.Handle, EM_SETRECTNP, 0, LongInt(@R));
  SendMessage(Edit2.Handle, EM_SCROLLCARET, 0, 0);
  Edit2.Repaint;
end;

{ TEditAlign }

constructor TEditAlign.Create(AOwner: TComponent);
begin
  inherited;
  FAlignment := taLeftJustify;
end;

procedure TEditAlign.CreateParams(var Params: TCreateParams);
begin
  inherited;
  case FAlignment of
    taLeftJustify : Params.Style := Params.Style or ES_LEFT or ES_MULTILINE;
    taCenter : Params.Style := Params.Style or ES_CENTER or ES_MULTILINE;
    taRightJustify : Params.Style := Params.Style or ES_RIGHT or ES_MULTILINE;
  end;
end;

procedure TEditAlign.SetAlignment(const Value: TAlignment);
begin
  if FAlignment <> Value then
  begin
    FAlignment := Value;
    RecreateWnd;
  end;
end;
aber damit steht zumindestens der Text dort, wo er stehen soll und mit markieren hast du auch keine Probleme. Der User darf halt bloß nicht enter drücken oder zuviel reinschreiben :'(

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat