![]() |
AW: Wordwrap umbruch
Hey, schaut doch supi aus was Du da gemacht hast, anscheinend ist es Dir gelungen, gratuliere! (bezieht sich auf dein bild)
Ich hätte jetzt nur noch vorschlagen können, wenn Du zwei Zeilen willst, setz zwei OnTop align labels in ein Panel. |
AW: Wordwrap umbruch
Zitat:
Danach jedoch nicht mehr aber wie gesagt werde für das Problem eine Lösung erarbeiten halt nur nicht mit Labeln. Mit dem Font bzg. der Zuweisung welchen ich verwenden möchte inkl. dem FontSize hat er ja recht. Nur er kann nicht behaupten das es quatsch ist denn er weis ja gar nicht welchen Font und Fontsize ich an meine Funktion weiter leite das ist nämlich genau der Default Font eines Labels und deshalb passt es. Zuweisung hätte ich noch addieren können das ist schon richtig war aber im Moment nicht nötig. Danke. gruss |
AW: Wordwrap umbruch
Nur als Nachtrag!
Habe die Funktion mit dem Label jetzt aus der AudioSessionVolume.pas rausgeschmissen und ändere den Text jetzt in der Anwendung selbst. So ist man von der TAudioVolume unabhängig und ändert den Text dort wo es angebracht ist. Zudem muss ich dann nichts mehr berechnen da ich das innerhalb meiner Library schon tue. Wenn der Text länger ist wie das Control und sich kein Leerzeichen innerhalb des Textes befindet dann schicke ich einfach nur mein Flag GD_Ellipsis und fertig. Die Anwendung muss sich dann um die Formatierung des Textes selber kümmern.
Delphi-Quellcode:
Es löst zwar nicht das Problem mit den 3 Zeilen macht mich aber unabhängig von TAudioVolume.
GDIP_GetTextBound(MainClass.DeviceName, FontName, 13, bw, bh, nil, GD_TextHorzUp);
// DeviceName x := x1; y := 41; ID := ID_DEVICENAME + Index; for i := 1 to Length(MainClass.DeviceName) do begin if MainClass.DeviceName[i] = ' ' then begin bNull := True; gSprSession.GD_DrawTextToCtrlEx(HSprSession, PWideChar(Trim(MainClass.DeviceName)), x, y, ParentWidth, bh * 2, gSprSession.GD_ARGB(255, 255, 255, 255), PWideChar(FontName), nil, 13, ID, GS_VISIBLE, 0, Ord(StringAlignmentCenter)); break; end; end; if not bNull then begin if (bw > ParentWidth) then gSprSession.GD_DrawTextToCtrlEx(HSprSession, PWideChar(Trim(MainClass.DeviceName)), x + 2, y, ParentWidth, bh, gSprSession.GD_ARGB(255, 255, 255, 255), PWideChar(FontName), nil, 13, ID, GS_VISIBLE, 0, GD_Ellipsis) // ***** das war's schon else gSprSession.GD_DrawTextToCtrlEx(HSprSession, PWideChar(Trim(MainClass.DeviceName)), x, y, ParentWidth, bh * 2, gSprSession.GD_ARGB(255, 255, 255, 255), PWideChar(FontName), nil, 13, ID, GS_VISIBLE, 0, Ord(StringAlignmentCenter)); end; gSprSession.GD_SetObjectUse3Dshadow(ID, 1.1, true); gSprSession.GD_SetObjectLinked(ID, LinkedID); gSprSession.GD_SetObjectLocked(ID, true); gruss |
AW: Wordwrap umbruch
Ok funktioniert jetzt..
Musste leider doch eingriff in meine Library nehmen um das Problem beheben zu können. Es waren keine zusätzlichen Berechnungen nötig. Hat aber keinen großen Einfluss auf meine anderen Anwendungen weil ich letztendlich nur eine Konstante "GD_CenterAndEllipsis" addiert habe. Ich zentriere den Text innerhalb des Control und addiere Ellipsis wenn nötig.
Delphi-Quellcode:
gruss
for i := 1 to Length(MainClass.DeviceName) do
begin if MainClass.DeviceName[i] = ' ' then begin bNull := True; gSprSession.GD_DrawTextToCtrlEx(HSprSession, PWideChar(Trim(MainClass.DeviceName)), x, y, ParentWidth, bh * 2, gSprSession.GD_ARGB(255, 255, 255, 255), PWideChar(FontName), nil, 13, ID, GS_VISIBLE, 0, GD_CenterAndEllipsis); break; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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