I did some tests,
it could work, but there is a lot to change.
I will place a screenshot of the result and explain the problems.
Results of my first tests :
You can switch between transparent and color.
But filling a group with a color just fills the space around a resource.
like You can see with the text and checkbox, the space between the text
and defined resource-area is not filled.
The radios, I didtn't work on with this test.
But maybe it helps, for the basics.
the problems are the text, radios and checkboxes
The button
switch between group transparent and red
DEFINE BUTTON oButt3 OF oBar FILE c_path + "\project\Switch.BMP" ;
MESSAGE "Switch" ;
ACTION ( oGrp1:lTransparent := .F., ;
oGrp2:lTransparent := .F., ;
oGrp3:lTransparent := .F., ;
oGrp4:lTransparent := .F., ;
oGrp5:lTransparent := .F., ;
oSay1:lTransparent := .F., ;
oCheck1:lTransparent := .F., ;
oGrp1:SetColor( 0, 128 ), ;
oGrp2:SetColor( 0, 128 ), ;
oGrp3:SetColor( 0, 128 ), ;
oGrp4:SetColor( 0, 128 ), ;
oGrp5:SetColor( 0, 128 ), ;
oDlg1:Refresh() ) ;
PROMPT "Switch"
The resource
FUNCTION D_RESOURCE()
LOCAL lCheck1 := .T., nRadio1 := 1
LOCAL oDlgFont := TFont():New("Arial",,-12,.F.,.F.,,,,.F.)
DEFINE DIALOG oDlg1 RESOURCE "Group" TITLE "Dialog-test" FONT oDlgFont ;
PIXEL // TRANSPARENT
REDEFINE GROUP oGrp1 ID 100 OF oDlg1 ;
FONT oDlgFont PROMPT "Group" PIXEL
oGrp1:lTransparent := .T.
REDEFINE SAY oSay1 PROMPT "Test SAY" ID 110 OF oDlg1
oSay1:SetColor( 0, 128 )
oSay1:lTransparent := .T.
REDEFINE GROUP oGrp2 ID 200 COLOR 0, 128 OF oDlg1 ;
FONT oDlgFont PROMPT "Group" PIXEL
oGrp2:lTransparent := .T.
REDEFINE RADIO oRadio1 VAR nRadio1 ID 210, 211, 212 OF oDlg1 UPDATE
AEval( oRadio1:aItems, { | oRad | oRad:lTransparent := .T., ;
oRad:SetFont ( oDlgFont ), ;
oRad:SetColor( 0,128 ) } )
REDEFINE GROUP oGrp3 ID 300 COLOR 0, 128 OF oDlg1 ;
FONT oDlgFont PROMPT "Group" PIXEL
oGrp3:lTransparent := .T.
REDEFINE GROUP oGrp4 ID 400 COLOR 0, 128 OF oDlg1 ;
FONT oDlgFont PROMPT "Group" PIXEL
oGrp4:lTransparent := .T.
REDEFINE GROUP oGrp5 ID 500 COLOR 0, 128 OF oDlg1 ;
FONT oDlgFont PROMPT "Group" PIXEL
oGrp5:lTransparent := .T.
REDEFINE CHECKBOX oCheck1 VAR lCheck1 ID 510 OF oDlg1 UPDATE
oCheck1:SetColor( 0, 128 )
oCheck1:lTransparent := .T.
ACTIVATE DIALOG oDlg1 CENTERED NOWAIT ;
ON INIT ( GradBrush( oDlg1, { { 0.50, 14853684, 16314573 }, ;
{ 0.50, 16314573, 14853684 } }, .T. ) )
oDlgFont:End()
oBar:Show()
RETURN NIL
// -------------------------------
FUNCTION GradBrush( oDlg, aColors, lPos )
local hDC, hBmp, hBmpOld, oBrush
if Empty( oDlg:oBrush:hBitmap )
hDC = CreateCompatibleDC( oDlg:GetDC() )
hBmp = CreateCompatibleBitMap( oDlg:hDC, oDlg:nWidth, oDlg:nHeight )
hBmpOld = SelectObject( hDC, hBmp )
GradientFill( hDC, 0, 0, oDlg:nHeight, oDlg:nWidth, aColors, lPos )
DeleteObject( oDlg:oBrush:hBrush )
oDlg:oBrush:hBitmap = hBmp
oDlg:oBrush:hBrush = CreatePatternBrush( hBmp )
SelectObject( hDC, hBmpOld )
oDlg:ReleaseDC()
endif
RETURN NIL
Best Regards
Uwe
