TLabel - Positionierungsproblem unter Linux (Ubuntu)

Antworten
Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

TLabel - Positionierungsproblem unter Linux (Ubuntu)

Beitrag von Rob »

Hallo miteinander,

ich habe eine Anwendung die unter Windows läuft und nun auf Linux (32 und 64bit) portiert werden soll.

Auf einem Form befindet sich ein TPanel, dort werden Labels mit unterschiedlichen Schriftgrößen positioniert.
In einer gedachten Zeile (auf einer Linie) sollen Texte unterschiedlicher Größe auf der gleichen Baseline positioniert werden.

Das Problem ist, das ein Text nicht auf der Baseline positioniert wird sondern mit dem oberen Rand, und ich auch mehrere Labels auf einer Zeile positioniere weshalb ich die tatsächliche Länge des Textes auf dem Panel benötige.

Bislang nutze ich hierzu Windows Funktionen aus der "Windows" Unit.
TOutlineTextMetric (hier spezuell tmAscent)
if GetOutlineTextMetrics(cnv.Canvas.Handle, SizeOf(Metric), @Metric) <> 0 then i := Metric.otmTextMetrics.tmAscent;
und
DrawText(lblGraphInfo.Canvas.Handle, PChar(mystr), Length(mystr), R, DT_CALCRECT);

Die Frage ist nun, wie mache ich das Ganze auf einem Linux System?
Gibt es evtl. etwas das diese Funktionen plattformübergreifend kapselt?

Ich hoffe ich bin mit meiner Frage hier richtig.

Grüße
Rob

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: TLabel - Positionierungsproblem unter Linux (Ubuntu)

Beitrag von theo »

Es gibt

GetTextMetrics() in LCLIntf

http://lazarus-ccr.sourceforge.net/docs ... trics.html
http://lazarus-ccr.sourceforge.net/docs ... trica.html

Als HDC kann man das Canvas.Handle benutzen
Ich glaube es werden nicht alle Parameter auf allen Plattformen gesetzt, aber Ascent/Descent schon.

Statt Drawtext kannst du evtl. Canvas.TextRect() verwenden.
S.a. http://lazarus-ccr.sourceforge.net/docs ... style.html

Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

Re: TLabel - Positionierungsproblem unter Linux (Ubuntu)

Beitrag von Rob »

Hallo theo,

danke!
Funktioniert, zumindest unter Windows. Linux muss ich noch testen.

Grüße
Rob

Antworten