![]() |
Re: Caption vertikal zentrieren
du übergibst einfach nur das Canvas, worauf zu den Text zeichnen willst (der Font und sonstiges würde dann aus diesem Canvas ausgelesen) und natürlich noch den zu messenden Text.
Delphi-Quellcode:
// dieses
i := TBitBtn(Sender).Canvas.TextHeight('derText') // würde dann so aussehn i := TextHeightEx(TBitBtn(Sender).Canvas, 'derText'); |
Re: Caption vertikal zentrieren
Hallo,
mit der API-Funktion ![]()
Delphi-Quellcode:
Gruß Hawkeye
var
s : string; R : TRect; begin s := 'Dies ist ein Text,'#10'der sich über drei Zeilen erstreckt.'#10'Dies ist die letzte Zeile.'; ZeroMemory(@R, SizeOf(R)); DrawTextEx(Canvas.Handle, PChar(s), Length(s), R, DT_CALCRECT, nil); ShowMessage (Format('cx=%d, cy=%d', [R.Right, R.Bottom])); end; |
Re: Caption vertikal zentrieren
Das müsste dann ja so im OnDrawButton-Event aussehen:
Delphi-Quellcode:
Bei TBitBtn(Sender).Canvas hat der Compiler ein Problem "undefinierter Bezeichner".
TextHeightEx(TBitBtn(Sender).Canvas, TBitBtn(Sender).Caption);
Was mir leider immernoch nicht klar ist, ist was ich mit dem Rückgabewert (TSize) der Funktion zu tun habe :gruebel: |
Re: Caption vertikal zentrieren
Dafür müßter es es doch erstmal zeichen, um die größe zu bekommen, aber er möchte ja erst messsen, um an der richtigen Stelle zu zeichnen.
für TBitBtn(Sender).Canvas mußt du natürlich das Canvas angeben, worauf du zeichnest (wußte ja nicht wie deine Zeichenroutine bisher aussieht) |
Re: Caption vertikal zentrieren
Ich sollte vielleicht erwähnen, dass meine Canvas-Kenntnisse nicht der Brüller sind :oops:
Ich denke mal, dass ich die Rückgabewerte deiner beiden Funktionen in ButtonGroup1.Canvas.TextOut als Parameter packen muss, richtig? Das geht mit einer Zeile auch wunderbar, bei zwei ignoriert er dann einfach den Umbruch. |
Re: Caption vertikal zentrieren
Delphi-Quellcode:
hierbei wären X und Y die Position, an welcher der Text zentriert gezeichnet werden soll
var ts: TSize;
S: String; S := 'derText'; ts := DrawTextEx(ButtonGroup1.Canvas, S); ButtonGroup1.Canvas.TextOut(X - ts.cx div 2, Y - ts.cy div 2, S); |
Re: Caption vertikal zentrieren
Jetzt ignoriert er leider jedlichen Zeilenumbruch.
Wie kann ich denn in der Methode sagen, dass er das Bild an die ursprüngliche Stelle und den Text in der Mitte 5 oder 10 Pixel daneben zentriert. Ich hatte es mit x := ButtonGroup1.Images.Width + 15; probiert, das hat allerdings nicht funktioniert. Y hab ich unter Kontrolle! Ich hätte nie gedacht, dass das so kompliziert ist... |
Re: Caption vertikal zentrieren
Vielen, vielen Dank für Eure Hilfe, aber das wird mir ein wenig zu komplex. Ich werde die Anzahl der Buttons reduzieren, sodass ich die einzelne Spalte breiter machen kann.
Danke nocheinmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 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