Page 1 of 1
Menu in dialog
Posted: Tue Aug 29, 2006 9:23 am
by Marc Vanzegbroeck
Hello,
I can add a buttonbar on a dialog, but is it possible to have a menu (and buttonbar) in a dialog?
Thanks,
Marc
Re: Menu in dialog
Posted: Tue Aug 29, 2006 9:47 am
by Enrico Maria Giordano
Yes, just build the menu in the ON INIT clause.
EMG
Posted: Tue Aug 29, 2006 9:53 am
by Marc Vanzegbroeck
Thanks Enrico,
Why didn't I think of doing that...
.
I already do it for my buttonbar...
Marc
Posted: Tue Aug 29, 2006 7:21 pm
by Enrico Maria Giordano
This is a working sample:
Code: Select all
#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL oDlg
DEFINE DIALOG oDlg
@ 2, 1 BUTTON "&Close";
ACTION oDlg:End()
ACTIVATE DIALOG oDlg;
ON INIT BUILDMENU( oDlg );
CENTER
RETURN NIL
STATIC FUNCTION BUILDMENU( oDlg )
LOCAL oMenu
MENU oMenu
MENUITEM "&Test"
MENU
MENUITEM "&Test1";
ACTION MSGINFO( "Test1" )
MENUITEM "&Test2";
ACTION MSGINFO( "Test2" )
MENUITEM "&Test3";
ACTION MSGINFO( "Test3" )
ENDMENU
ENDMENU
oDlg:SetMenu( oMenu )
RETURN NIL
EMG
Posted: Thu Aug 31, 2006 6:30 am
by Marc Vanzegbroeck
Enrico,
I just found a strange effect after implementing this.
The buttons, checkboxes and radioboxes don't work any more. If you click on them, nothing happens.
The onclicks on bitmaps, barbuttons and the doubleclick on listboxes still works.
If I comment out the STATIC FUNCTION BUILDMENU( oDlg ), everthing works again.
Is there something I have to change?
Marc
Posted: Thu Aug 31, 2006 10:37 am
by Enrico Maria Giordano
Sorry, I'm unable to replicate that problem here.
EMG
Posted: Thu Aug 31, 2006 12:21 pm
by Marc Vanzegbroeck
Here is an example so you can see that it's not working after calling the menu.
Code: Select all
#INCLUDE "fivewin.CH"
FUNCTION test()
local oDlg
local vspare := .f.
DEFINE DIALOG oDlg RESOURCE "test"
REDEFINE CHECKBOX vspare ID 104 of oDlg ON CHANGE(msginfo(vspare))
REDEFINE BUTTON ID 101 OF oDlg ACTION msginfo('OK')
REDEFINE BUTTON ID 102 OF oDlg ACTION msginfo('Cancel')
REDEFINE BUTTON ID 103 OF oDlg ACTION msginfo('Help')
ACTIVATE DIALOG oDlg CENTERED on init BUILDMENU( oDlg )
RETURN nil
STATIC FUNCTION buildmenu( odlg )
LOCAL oMenu
IF .t. // enable/disable menu
MENU oMenu
MENUITEM "&Test"
MENU
MENUITEM "&Test1";
ACTION MSGINFO( "Test1" )
MENUITEM "&Test2";
ACTION MSGINFO( "Test2" )
MENUITEM "&Test3";
ACTION MSGINFO( "Test3" )
ENDMENU
ENDMENU
oDlg:SetMenu( oMenu )
ENDIF
RETURN NIL
Here is the rc-file
Code: Select all
/****************************************************************************
test.rc
produced by Borland Resource Workshop
*****************************************************************************/
TEST DIALOG 6, 15, 207, 111
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Test"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "OK", 101, 148, 6, 50, 14
PUSHBUTTON "Cancel", 102, 148, 24, 50, 14
PUSHBUTTON "Help", 103, 148, 42, 50, 14
CHECKBOX "Checkbox", 104, 7, 14, 93, 11, BS_AUTOCHECKBOX | WS_TABSTOP
}
Changing the line
IF .t. // enable/disable menu you can disable/enable the menu.
Marc
Posted: Thu Aug 31, 2006 12:33 pm
by Enrico Maria Giordano
Works fine here, sorry.
EMG
Posted: Thu Aug 31, 2006 1:23 pm
by Marc Vanzegbroeck
That's strange, here are the exe-files compiled on my PC.
http://www.vms.be/FWTest/TestMenu.zip
Marc
Posted: Thu Aug 31, 2006 3:26 pm
by Enrico Maria Giordano
I confirm the problem with your EXE. Do you want mine?
EMG
Posted: Thu Aug 31, 2006 3:45 pm
by Marc Vanzegbroeck
No need to send your exe-file, I you say they are working, I'am sure they do, but could be that I'am using FW195 and you are using a newer release?
Marc
Posted: Thu Aug 31, 2006 4:37 pm
by Enrico Maria Giordano
Yes, definitely.
EMG