Page 2 of 2
Posted: Sat Sep 15, 2007 3:40 pm
by alexstrickland
Hi Antonio
The groups actually aren't too important, and the hanging doesn't matter either as I have a work around.
But it doesn't look too good, and even if I take the XP themes off, it's still not so good.
You suggested that I try and use the resource editor, as you can see, I have little chance there, but what is the difference ultimately between dynamically defining the dialog, and creating it via the resource editor?
Regards
Alex
Posted: Sat Sep 15, 2007 5:55 pm
by Antonio Linares
Alex,
> but what is the difference ultimately between dynamically defining the dialog, and creating it via the resource editor?
Its easier for you

Lets see if we can help you, the problem is that your sample is not an easy one.
Posted: Tue Sep 18, 2007 7:39 am
by alexstrickland
Hi Antonio
Thanks for your help. I am under some pressure to get some code out, if you think that a fix may take a while, please let me know and I will code an alternate solution without tabs temporarily.
Thank you
Alex
Posted: Tue Sep 18, 2007 7:48 am
by Antonio Linares
Alex,
Could you provide us a simpler and smaller sample ? thanks
Your current example has 1301 lines source code and 45003 bytes
Posted: Tue Sep 18, 2007 11:44 am
by alexstrickland
Hi Antonio
I have reviewed everything you have said again, and it now does not hang and the groups do not obscure the other data. The code below demonstrates the remaining problems.
This is folder.prg with your fix applied (correctly I hope - see TFixFolder), and some extra controls.
It demonstrates the same problem originally reported with the folder, group boxes do not look good, radio buttons look terrible, and the normal button had a strange frame.
The original fix as shown here does not actually do anything, I had to comment out the two lines:
if IsAppThemed()
endif
and then it did something, but it was worse.
Regards
Alex
Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oDlg, oFld
local oGet, cGet := " "
local oGroup
local oSay, cSay := "Say buddy"
local oRadio, nRadio := 1
DEFINE DIALOG oDlg TITLE "FiveWin Dynamic folders" ;
FROM 5, 5 TO 30, 49
/*@ 0.5, 1 FOLDER oFld PROMPT "&xBase", "&And OOP", "&Power" ;
OF oDlg SIZE 160, 90*/
// This fix does not seem to help
oFld := TFixFolder():New( 0.5, 1, {"&xBase", "&And OOP", "&Power"}, {}, oDlg,,,, .F., .F., 160, 160,, .F., )
// Comment this line to get proper Folder colour
@ 0, 1 GROUP oGroup TO 9, 15 OF oFld:aDialogs[ 1 ]
@ 1, 2 BUTTON "&Hello" OF oFld:aDialogs[ 1 ] ;
ACTION MsgInfo( "Hello world!" )
// Comment this line to get proper Folder colour
@ 3, 2 GET oGet VAR cGet OF oFld:aDialogs[ 1 ]
@ 4, 2 SAY oSAY VAR cSAY OF oFld:aDialogs[ 1 ]
// If get commented this looks sort of ok, otherwise really bad
@ 6, 2 RADIO oRadio VAR nRadio ITEMS "radio 5" OF oFld:aDialogs[ 1 ]
@ 9.5, 11 BUTTON "Ok" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
return nil
procedure AppSys // Xbase++ requirement
return
#define FD_TABMARGIN 40
CLASS TFixFolder INHERIT TFolder
METHOD Default()
METHOD LoadPages( aResNames, bRedefineControls )
ENDCLASS
METHOD Default() CLASS TFixFolder
local nLen := Len( ::aPrompts ), n
local oDlg
local nHeight := ::nFdHeight
#ifndef __CLIPPER__
nHeight *= TabGetRowCount( ::hWnd )
#endif
if nLen > 0
if ::lAllWidth
::nTabSize = int( ::nWidth() / nLen )
else
::nTabSize := 0
for n = 1 to nLen
::nTabSize = Max( ::nTabSize, ;
int( GetTextWidth( 0, ::aPrompts[n], ;
::oFont:hFont ) + FD_TABMARGIN ) )
next n
::nTabSize = Min( ::nTabSize, int( ::nWidth() / nLen ) )
endif
else
::nTabSize = ::nWidth()
endif
for nLen = 1 to Len( ::aDialogs )
oDlg = ::aDialogs[ nLen ]
#ifdef __CLIPPER__
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT ( oDlg:Move( nHeight + 2, 3 ) ) ;
VALID .f. // to avoid exiting pressing Esc !!!
#else
if ChildLevel( ::oWnd, TDialog() ) == 1
if ! ::oWnd:lResize16
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT oDlg:Move( nHeight - 1, 1 ) ;
VALID .f. // to avoid exiting pressing Esc !!!
else
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT oDlg:Move( nHeight - 1, 1 ) ;
VALID .f. RESIZE16 // to avoid exiting pressing Esc !!!
endif
else
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT oDlg:Move( nHeight - 1, 1 ) ;
VALID .f. // to avoid exiting pressing Esc !!!
endif
#endif
#ifndef __CLIPPER__
//if IsAppThemed()
// oDlg:SetBrush( TBrush():New( "NULL" ) )
//if Empty( oDlg:oBrush:hBitmap )
oDlg:bEraseBkGnd = { | hDC | DrawPBack( oDlg:hWnd, hDC ), 1 }
//endif
//endif
#endif
oDlg:Hide()
next
if Len( ::aDialogs ) > 0
if ::nOption <= Len( ::aDialogs )
::aDialogs[ ::nOption ]:Show()
endif
endif
return nil
METHOD LoadPages( aResNames, bRedefineControls ) CLASS TFixFolder
local n, oDlg
local oThis := Self
::DelPages()
::aPrompts = aResNames
::aDialogs = Array( Len( aResNames ) )
for n = 1 to Len( ::aDialogs )
DEFINE DIALOG oDlg OF Self RESOURCE aResNames[ n ] ;
FONT Self:oFont
::aDialogs[ n ] = oDlg
if bRedefineControls != nil
Eval( bRedefineControls, Self, n )
endif
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT ( oDlg:Move( oThis:nFdHeight + 2, 3, oThis:nWidth - 6, oThis:nHeight - oThis:nFdHeight - 5 ) ) ;
VALID .f. // to avoid exiting pressing Esc !!!
#ifndef __CLIPPER__
//if IsAppThemed()
// oDlg:SetBrush( TBrush():New( "NULL" ) )
//if Empty( oDlg:oBrush:hBitmap )
oDlg:bEraseBkGnd = { | hDC | DrawPBack( oDlg:hWnd, hDC ), 1 }
//endif
//endif
#endif
oDlg:Hide()
next
::nOption = 1
::aDialogs[ 1 ]:Show()
return nil
Posted: Tue Oct 02, 2007 4:02 am
by Antonio Linares
Alex,
Your code looks fine here on first try:

Posted: Tue Oct 02, 2007 7:57 am
by alexstrickland
On XP I get:

I hope you do

Regards
Alex
Posted: Tue Oct 02, 2007 8:48 am
by Antonio Linares
Alex,
You are using themes, thats the difference

We are going to review it, thanks
Posted: Tue Oct 02, 2007 1:52 pm
by James Bott
Alex,
Have you tried the TRANSPARENT clause in the GROUP definition?
James
Posted: Wed Oct 03, 2007 3:51 am
by Antonio Linares
Dear James,
I have sent you several emails and got no answer from you yet. Please check my emails, thanks

Posted: Wed Oct 03, 2007 5:03 am
by Antonio Linares
Alex,
Please do it this way (see below the results):
Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oDlg, oFld
local oGroup
local oSay, cSay := "Say buddy"
local oRadio, nRadio := 1
DEFINE DIALOG oDlg TITLE "FiveWin Dynamic folders" ;
FROM 5, 5 TO 30, 49
@ 0.5, 1 FOLDER oFld PROMPT "&xBase", "&And OOP", "&Power" ;
OF oDlg SIZE 160, 160
@ 0, 1 GROUP oGroup TO 9, 15 OF oFld:aDialogs[ 1 ]
oGroup:lTransparent = .T.
@ 1, 2 BUTTON "&Hello" OF oFld:aDialogs[ 1 ] ;
ACTION MsgInfo( "Hello world!" )
@ 4, 2 SAY oSAY VAR cSAY OF oFld:aDialogs[ 1 ]
@ 6, 2 RADIO oRadio VAR nRadio ITEMS "radio 1", "radio 2" OF oFld:aDialogs[ 1 ]
@ 9.5, 11 BUTTON "Ok" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT PlaceGet( oFld )
return nil
function PlaceGet( oFld )
local oGet, cGet := " "
@ 7, 4 GET oGet VAR cGet OF oFld:aDialogs[ 1 ] SIZE 80, 20
return nil
