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