Thema: Delphi Wordwrap umbruch

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#23

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 18:33
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

Geändert von EWeiss (20. Nov 2018 um 19:28 Uhr)
  Mit Zitat antworten Zitat