AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text im TEdit mittig

Ein Thema von franktron · begonnen am 14. Sep 2006 · letzter Beitrag vom 11. Dez 2006
 
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, 16: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz