Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

checkbox text zentrieren

  Alt 29. Mai 2013, 20:47
Jemand ne Idee wie ich Text in einer Checkbox zentrieren kann ohne dabei das Flag BS_AUTOCHECKBOX zu verlieren?

Die Ckeckbox soll nachher wie ein Button aussehen incl. Beschriftung.

Im moment vergleiche ich beim zeichnen des Textes auf BS_AUTOCHECKBOX

Delphi-Quellcode:
      if ButtonStyle = BS_AUTOCHECKBOX then
      begin
        Img := SkinEngine.GetButImageBackProperty(WinHandle);
        SkinEngine.GetImageSize(Img, ImgW, ImgH);
        x := ImgW div 2 + 2;
      end
      else if ButtonStyle = BS_LABEL_LEFT then
      begin
        x := 0;
      end
      else if ButtonStyle = BS_LABEL_RIGHT then
      begin
        GetClientRect(WinHandle, rc);
        x := rc.Right - dW;
      end
      else if ButtonStyle = BS_LABEL_MULTILINE then
      begin
        x := 0;
        y := 0;
        dW := xW;
        dH := yH;
        UseStrFormat := BS_LABEL_MULTILINE;
      end
      else
        x := MAX((xW - dW) div 2, 0);

      Result := DrawStringFormatedEx(Graphics, UseText, x, y, dW,
        dH, ColrARGB, SkinEngine.SK_TEXTRENDERING, TempFont, Use3D, UseStrFormat);

      GdipDeleteFont(TempFont); // Lösche das Font Object
Deaktiviere ich
if ButtonStyle = BS_AUTOCHECKBOX then.. blabla

kann ich den Text zentriert auf die Checkbox zeichnen dann geht mir aber
die berechnung für die Standard Checkboxen verloren wo der Text rechts davon gezeichnet wird.

Notfalls muss ich mir halt noch ein Flag zu meinen Standard Buttons addieren
um eine Checkbox zu emulieren "BST_PUSHED, BS_PUSHLIKE"

gruss

Geändert von EWeiss (29. Mai 2013 um 21:08 Uhr)
  Mit Zitat antworten Zitat