Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wordwrap umbruch (https://www.delphipraxis.net/198619-wordwrap-umbruch.html)

KodeZwerg 20. Nov 2018 15:38

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.

EWeiss 20. Nov 2018 15:45

AW: Wordwrap umbruch
 
Zitat:

Zitat von KodeZwerg (Beitrag 1418547)
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.

Es funktionierte alles solange der Umbruch sich auf 2 Zeilen beschränkt.
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

EWeiss 20. Nov 2018 17:33

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:
      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);
Es löst zwar nicht das Problem mit den 3 Zeilen macht mich aber unabhängig von TAudioVolume.

gruss

EWeiss 20. Nov 2018 21:50

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:
      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;
gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Seite 3 von 3     123   

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