Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Text im TEdit mittig (https://www.delphipraxis.net/77082-text-im-tedit-mittig.html)

franktron 14. Sep 2006 13:58


Text im TEdit mittig
 
Wie kann ich in meinem TEdit den Text in der mitte anordnen und zwar nicht in der Breite sondern in der Höhe.

Also wenn z.b. meine Schrift 10 ist und meine Edit 20 müsste ja oben ein Rand von 5 sein.

RavenIV 14. Sep 2006 14:08

Re: Text im TEdit mittig
 
Bei einem TEdit geht das meines Wissens nach nicht.
Bei einem TMemo kann man schon mal Alignment angeben. Aber ob das das ist, was Du willst, keine Ahnung.

Sonst musst Du eine Fremdkomponente verwenden, z,B, bei torry.net suchen...

Daniel B 14. Sep 2006 14:09

Re: Text im TEdit mittig
 
Da hilft nur TEDit ableiten und selbst umstricken, oder mit Canvas den Text selbst an der richtigen Stelle zeichnen.

franktron 14. Sep 2006 14:12

Re: Text im TEdit mittig
 
Zitat:

Zitat von Daniel B
Da hilft nur TEDit ableiten und selbst umstricken, oder mit Canvas den Text selbst an der richtigen Stelle zeichnen.

Abgeleitet ist das schon hab neunen Rand gemalt, also muss ich den gesamten Text Selber Zeichnen

3_of_8 14. Sep 2006 14:15

Re: Text im TEdit mittig
 
Was ist daran so schlimm? Außerdem ist ein TEdit eh fast das gleiche wie ein TMemo, jedenfalls aus WinAPI-Sicht, daher dürfte es möglich sein, mit API-Aufrufen den gleichen Effekt hinzukriegen.

Daniel B 14. Sep 2006 14:17

Re: Text im TEdit mittig
 
Ach so, wenn du schon dabei bist, ja, musst selbst zeichnen, die Position hast du ja einfach durch Edit.Height/Font.Size/2 und ab da beginnst du dann das Zeichnen an.

franktron 14. Sep 2006 14:24

Re: Text im TEdit mittig
 
Ja aber das ganz mit Markieren und Copy Past u.s.w. geht dann ja nicht mehr

Nils_13 14. Sep 2006 14:28

Re: Text im TEdit mittig
 
Bei Google suchenadpEdit bzw. Bei Google suchenDelphi adpEdit

Daniel B 14. Sep 2006 14:32

Re: Text im TEdit mittig
 
Zitat:

Zitat von Nils_13

Die machen es nur horizontal, Er möchte es vertikal, in der Höhe ausricten.

Keldorn 14. Sep 2006 15:41

Re: Text im TEdit mittig
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz