- draw radio button and checkbox through ThemeServices for win32 (no XP)

git-svn-id: trunk@11252 -
This commit is contained in:
paul 2007-06-01 08:33:54 +00:00
parent 2b74c55f99
commit 060ce0c803
3 changed files with 26 additions and 8 deletions

View File

@ -1142,7 +1142,7 @@ var
Flags: dword;
Begin
// flat button border cannot be drawn by DrawFrameControl, draw ourselves
if (UType = DFC_BUTTON) or ((UState and DFCS_FLAT) <> 0) then
if (UType = DFC_BUTTON) and ((UState and DFCS_FLAT) <> 0) then
begin
if (UState and DFCS_PUSHED) <> 0 then
Flags := BDR_SUNKENOUTER

View File

@ -249,12 +249,13 @@ const
DFCS_SCROLLSIZEGRIP = 8;
DFCS_SCROLLUP = 0;
DFCS_ADJUSTRECT = 8192;
DFCS_CHECKED = 1024;
DFCS_FLAT = 16384;
DFCS_INACTIVE = 256;
DFCS_MONO = 32768;
DFCS_PUSHED = 512;
DFCS_CHECKED = 1024;
DFCS_HOT = 4096;
DFCS_ADJUSTRECT = 8192;
DFCS_FLAT = 16384;
DFCS_MONO = 32768;
HTERROR = -2;
HTTRANSPARENT = -1;

View File

@ -1773,8 +1773,6 @@ begin
ARect := R; // in order to pass by reference
if Details.Element in [teButton, teToolBar, teHeader] then
begin
ADrawFlags := DFCS_BUTTONPUSH;
if Details.Element = teToolBar then
begin
//ADrawFlags := ADrawFlags or DFCS_FLAT;
@ -1790,12 +1788,31 @@ begin
end
else
begin
ADrawFlags := DFCS_BUTTONPUSH;
if Details.Element = teButton then
begin
case Details.Part of
BP_RADIOBUTTON:
begin
ADrawFlags := DFCS_BUTTONRADIO;
if Details.State >= RBS_CHECKEDNORMAL then
ADrawFlags := ADrawFlags or DFCS_CHECKED;
end;
BP_CHECKBOX:
begin
ADrawFlags := DFCS_BUTTONCHECK;
if Details.State >= CBS_CHECKEDNORMAL then
ADrawFlags := ADrawFlags or DFCS_CHECKED;
end;
end;
end;
if IsDisabled(Details) then
ADrawFlags := ADrawFlags or DFCS_INACTIVE else
if IsPushed(Details) then
ADrawFlags := ADrawFlags or DFCS_PUSHED else
if IsHot(Details) then
ADrawFlags := ADrawFlags or DFCS_CHECKED;
ADrawFlags := ADrawFlags or DFCS_HOT;
WidgetSet.DrawFrameControl(DC, ARect, DFC_BUTTON, ADrawFlags);
end;