[D5] Textbreite im TStaticText

Hi,

ich muß die breite eines textes in TStaticText in pixeln ermitteln. ein TCanvas liefert den wert mit TCanvas.TextWidth zurück. aber im TStaticText kann ich nicht auf einen Canvas zugreifen.
wie kann ich die breite trotzdem bestimmen ?

CU, DiJey

Hi Dirk!

aber im TStaticText kann ich nicht auf einen Canvas zugreifen.

…was auch kein Wunder ist, wenn’s gar kein Canvas gibt :smile:

wie kann ich die breite trotzdem bestimmen ?

Diese Funktion leistet das Gewünschte:

FUNCTION StaticTextPixelWidth (st: TStaticText): INTEGER;

VAR
 DC : HDC;
 SaveFont: HFont;
 TextSize: TSize;

begin
 DC := GetDC(0);
 SaveFont := SelectObject(DC, st.Font.Handle);
 GetTextExtentPoint32(DC, PCHAR(st.Caption), Length(st.Caption), TextSize);
 SelectObject(DC, SaveFont);
 ReleaseDC(0, DC);

 Result := TextSize.cx
end;

Mit freundlichem Gruß
Martin