![]() |
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. |
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... |
Re: Text im TEdit mittig
Da hilft nur TEDit ableiten und selbst umstricken, oder mit Canvas den Text selbst an der richtigen Stelle zeichnen.
|
Re: Text im TEdit mittig
Zitat:
|
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.
|
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.
|
Re: Text im TEdit mittig
Ja aber das ganz mit Markieren und Copy Past u.s.w. geht dann ja nicht mehr
|
Re: Text im TEdit mittig
|
Re: Text im TEdit mittig
Zitat:
|
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:
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 :'(
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; Mfg Frank |
Re: Text im TEdit mittig
Ich hab Deinen Ansatz mal etwas weiter gesponnen... jetzt klappts auch mit Zeilenumbrüchen ;)
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 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-2025 by Thomas Breitkreuz