Re: Mouse behavior
Posted: Tue Feb 07, 2006 3:11 pm
I have a program that has standalone input dialogs and input dialogs located in folders. What I have found is that the mouse does not behave the same for identical clicks.
I have attached the sample source program and rc file below. Should you have problems compiling it with buildh.bat please let me know and I will post that files to a ftp site.
The differences I find are as follows. If you open the first menu selection "Simple Dialog Page" a dialog opens containing 3 fields. If I left click on the second files the mouse gets positioned into the second field and I am able to edit the values. Now when you open the second menu option "Folder Dialog Pages" and left click on the second field the cursor remains in the first dialog box. To move to the second field via mouse requires the user to right click.
So what do I have to do to make the mouse behavior for folders to be the same as for simple dialogs?
Thanks again for your help.
Vytas
Program source:
#include "FiveWin.ch"
#include "report.ch"
#include "folder.ch"
#include "TCBrowse.ch"
STATIC oWnd
FUNCTION Main(InLinePass)
LOCAL hBorland := loadlibrary("BWCC32.DLL")
BWCCRegister(GetResources())
REQUEST DBFCDX
DBSETDRIVER("DBFCDX")
BWCCRegister(GetResources())
SET 3DLOOK ON
// Open main window
OpenMain()
SET RESOURCES TO
FreeLibrary(hBorland)
RETURN nil
DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BWCC32.DLL"
* ==================================================================
FUNCTION OpenMain()
DEFINE WINDOW oWnd FROM 1, 1 TO 24, 80 ;
TITLE "TEST mouse behavior" ;
COLOR RGB(0,255,0) ,RGB(255,0,255) ;
MENU BuildMenu()
ACTIVATE WINDOW oWnd
RETURN nil
* ==================================================================
FUNCTION BuildMenu()
LOCAL oMenu
MENU oMenu
MENUITEM "&Simple Dialog Page" MESSAGE "Standard dialog ";
ACTION SimplePage()
MENUITEM "&Folder Dialog Pages" MESSAGE "Folder pages";
ACTION FoldPages()
ENDMENU
RETURN oMenu
* ==================================================================
FUNCTION SimplePage()
Pg1Fld1 := "Test1"
Pg1Fld2 := 8.57
Pg2Fld1 := "Test2"
Pg2Fld2 := 1.03
Pg2Fld3 := 2.66
DEFINE DIALOG oDlg RESOURCE "PG0"
REDEFINE GET Pg2fld1 ID 2001 OF oDlg UPDATE
REDEFINE GET Pg2Fld2 ID 2002 OF oDlg UPDATE PICTURE "9.99999"
REDEFINE GET Pg2Fld3 ID 2003 OF oDlg UPDATE PICTURE "9.99999"
ACTIVATE DIALOG oDlg CENTERED ;
VALID MsgYesNo( "Want to end ?" )
RETURN NIL
FUNCTION FoldPages()
Pg1Fld1 := "Test1"
Pg1Fld2 := 8.57
Pg2Fld1 := "Test2"
Pg2Fld2 := 1.03
Pg2Fld3 := 2.66
DEFINE DIALOG oDlg RESOURCE "SAMPLE1"
REDEFINE FOLDER oFld ID 101 OF oDlg ;
PROMPT "Page1", "Page2" ;
DIALOGS "PG1", "PG2"
oFld:aEnable = { .t., .t.}
REDEFINE GET Pg1fld1 ID 1001 OF oFld:aDialogs[1] UPDATE
REDEFINE GET Pg1Fld2 ID 1002 OF oFld:aDialogs[1] UPDATE PICTURE "9.99999"
REDEFINE GET Pg2fld1 ID 2001 OF oFld:aDialogs[2] UPDATE
REDEFINE GET Pg2Fld2 ID 2002 OF oFld:aDialogs[2] UPDATE PICTURE "9.99999"
REDEFINE GET Pg2Fld3 ID 2003 OF oFld:aDialogs[2] UPDATE PICTURE "9.99999"
ACTIVATE DIALOG oDlg CENTERED ;
VALID MsgYesNo( "Want to end ?" )
RETURN NIL
Testdial.rc file :
#define IDC_CHECKBOX1 92
#include ".\..\include\WinApi.ch"
#ifdef __FLAT__
1 24 "winxp\WindowsXP.Manifest"
#endif
#ifdef __64__
1 24 "WinXP/WindowsXP.Manifest64"
#endif
PG0 DIALOG 18, 18, 142, 92
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Page0"
BEGIN
EDITTEXT 2001, 15, 16, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2002, 59, 18, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2003, 102, 17, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
END
SAMPLE1 DIALOG 18, 18, 300, 182
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Sample 1 Frame"
BEGIN
CONTROL "", 101, FOLDER32, 0 | WS_CHILD | WS_VISIBLE|WS_TABSTOP, 12, 11, 275, 160
END
PG1 DIALOG 18, 18, 240, 157
STYLE DS_MODALFRAME | WS_CHILD | WS_BORDER | WS_SYSMENU
CAPTION "Pg1"
BEGIN
EDITTEXT 1001, 46, 29, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 1002, 77, 29, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "test1", -1, 22, 26, 16, 8
END
PG2 DIALOG 18, 18, 281, 158
STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU
CAPTION "Pg2"
BEGIN
EDITTEXT 2001, 14, 15, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2002, 58, 17, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2003, 101, 16, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
END
I have attached the sample source program and rc file below. Should you have problems compiling it with buildh.bat please let me know and I will post that files to a ftp site.
The differences I find are as follows. If you open the first menu selection "Simple Dialog Page" a dialog opens containing 3 fields. If I left click on the second files the mouse gets positioned into the second field and I am able to edit the values. Now when you open the second menu option "Folder Dialog Pages" and left click on the second field the cursor remains in the first dialog box. To move to the second field via mouse requires the user to right click.
So what do I have to do to make the mouse behavior for folders to be the same as for simple dialogs?
Thanks again for your help.
Vytas
Program source:
#include "FiveWin.ch"
#include "report.ch"
#include "folder.ch"
#include "TCBrowse.ch"
STATIC oWnd
FUNCTION Main(InLinePass)
LOCAL hBorland := loadlibrary("BWCC32.DLL")
BWCCRegister(GetResources())
REQUEST DBFCDX
DBSETDRIVER("DBFCDX")
BWCCRegister(GetResources())
SET 3DLOOK ON
// Open main window
OpenMain()
SET RESOURCES TO
FreeLibrary(hBorland)
RETURN nil
DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BWCC32.DLL"
* ==================================================================
FUNCTION OpenMain()
DEFINE WINDOW oWnd FROM 1, 1 TO 24, 80 ;
TITLE "TEST mouse behavior" ;
COLOR RGB(0,255,0) ,RGB(255,0,255) ;
MENU BuildMenu()
ACTIVATE WINDOW oWnd
RETURN nil
* ==================================================================
FUNCTION BuildMenu()
LOCAL oMenu
MENU oMenu
MENUITEM "&Simple Dialog Page" MESSAGE "Standard dialog ";
ACTION SimplePage()
MENUITEM "&Folder Dialog Pages" MESSAGE "Folder pages";
ACTION FoldPages()
ENDMENU
RETURN oMenu
* ==================================================================
FUNCTION SimplePage()
Pg1Fld1 := "Test1"
Pg1Fld2 := 8.57
Pg2Fld1 := "Test2"
Pg2Fld2 := 1.03
Pg2Fld3 := 2.66
DEFINE DIALOG oDlg RESOURCE "PG0"
REDEFINE GET Pg2fld1 ID 2001 OF oDlg UPDATE
REDEFINE GET Pg2Fld2 ID 2002 OF oDlg UPDATE PICTURE "9.99999"
REDEFINE GET Pg2Fld3 ID 2003 OF oDlg UPDATE PICTURE "9.99999"
ACTIVATE DIALOG oDlg CENTERED ;
VALID MsgYesNo( "Want to end ?" )
RETURN NIL
FUNCTION FoldPages()
Pg1Fld1 := "Test1"
Pg1Fld2 := 8.57
Pg2Fld1 := "Test2"
Pg2Fld2 := 1.03
Pg2Fld3 := 2.66
DEFINE DIALOG oDlg RESOURCE "SAMPLE1"
REDEFINE FOLDER oFld ID 101 OF oDlg ;
PROMPT "Page1", "Page2" ;
DIALOGS "PG1", "PG2"
oFld:aEnable = { .t., .t.}
REDEFINE GET Pg1fld1 ID 1001 OF oFld:aDialogs[1] UPDATE
REDEFINE GET Pg1Fld2 ID 1002 OF oFld:aDialogs[1] UPDATE PICTURE "9.99999"
REDEFINE GET Pg2fld1 ID 2001 OF oFld:aDialogs[2] UPDATE
REDEFINE GET Pg2Fld2 ID 2002 OF oFld:aDialogs[2] UPDATE PICTURE "9.99999"
REDEFINE GET Pg2Fld3 ID 2003 OF oFld:aDialogs[2] UPDATE PICTURE "9.99999"
ACTIVATE DIALOG oDlg CENTERED ;
VALID MsgYesNo( "Want to end ?" )
RETURN NIL
Testdial.rc file :
#define IDC_CHECKBOX1 92
#include ".\..\include\WinApi.ch"
#ifdef __FLAT__
1 24 "winxp\WindowsXP.Manifest"
#endif
#ifdef __64__
1 24 "WinXP/WindowsXP.Manifest64"
#endif
PG0 DIALOG 18, 18, 142, 92
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Page0"
BEGIN
EDITTEXT 2001, 15, 16, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2002, 59, 18, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2003, 102, 17, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
END
SAMPLE1 DIALOG 18, 18, 300, 182
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Sample 1 Frame"
BEGIN
CONTROL "", 101, FOLDER32, 0 | WS_CHILD | WS_VISIBLE|WS_TABSTOP, 12, 11, 275, 160
END
PG1 DIALOG 18, 18, 240, 157
STYLE DS_MODALFRAME | WS_CHILD | WS_BORDER | WS_SYSMENU
CAPTION "Pg1"
BEGIN
EDITTEXT 1001, 46, 29, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 1002, 77, 29, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
LTEXT "test1", -1, 22, 26, 16, 8
END
PG2 DIALOG 18, 18, 281, 158
STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU
CAPTION "Pg2"
BEGIN
EDITTEXT 2001, 14, 15, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2002, 58, 17, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
EDITTEXT 2003, 101, 16, 16, 12, ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
END