Page 1 of 1

Bug in TBitmap [Fixed]

PostPosted: Sat Apr 01, 2017 7:39 pm
by Enrico Maria Giordano
TBitmap disables nomodal oDlg valid. This is a sample. Try to hit ESC on the first and on the second dialogs. The first will close (it shouldn't), the second not.

Code: Select all  Expand view
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    DEFINE DIALOG oDlg

    TBitmap():New()

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:bValid := { || !GetKeyState( VK_ESCAPE ) };
             CENTER NOMODAL

    SYSWAIT( 2 )

    oDlg:End()

    DEFINE DIALOG oDlg

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:bValid := { || !GetKeyState( VK_ESCAPE ) };
             CENTER NOMODAL

    SYSWAIT( 2 )

    RETURN NIL


EMG

Re: Bug in TBitmap

PostPosted: Sun Apr 02, 2017 7:43 am
by Enrico Maria Giordano
The same problem there is with TButton but not with TGet.

Any workaround? How to get nomodal dialog's VALID clause to work with any controls?

EMG

Re: Bug in TBitmap

PostPosted: Tue Apr 04, 2017 6:14 am
by Antonio Linares
Enrico,

It is working fine this way:
Code: Select all  Expand view
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBmp

    DEFINE DIALOG oDlg

    oBmp := TBitmap():New()

    oBmp:nDlgCode = DLGC_WANTALLKEYS

    ACTIVATE DIALOG oDlg;
             CENTER NOMODAL ;
             VALID ! GetKeyState( VK_ESCAPE )

    SYSWAIT( 2 )

    oDlg:End()

    DEFINE DIALOG oDlg

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:bValid := { || !GetKeyState( VK_ESCAPE ) };
             CENTER NOMODAL

    SYSWAIT( 2 )

    RETURN NIL

Re: Bug in TBitmap

PostPosted: Tue Apr 04, 2017 9:16 am
by Enrico Maria Giordano
Thank you. But this new sample, using resources, still doesn't work:

Code: Select all  Expand view
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    DEFINE DIALOG oDlg;
           RESOURCE "TEST"

    TBitmap():Redefine( 101, , , oDlg ):nDlgCode = DLGC_WANTALLKEYS

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:bValid := { || !GetKeyState( VK_ESCAPE ) };
             CENTER NOMODAL

    SYSWAIT( 2 )

    oDlg:End()

    DEFINE DIALOG oDlg

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:bValid := { || !GetKeyState( VK_ESCAPE ) };
             CENTER NOMODAL

    SYSWAIT( 2 )

    RETURN NIL


Code: Select all  Expand view
TEST DIALOG 69, 74, 180, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
FONT 11, "Arial"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 10, 5, 160, 35
 CONTROL "", 101, "TBitmap", WS_CHILD | WS_VISIBLE, 20, 17, 16, 15
}


EMG

Re: Bug in TBitmap

PostPosted: Tue Apr 04, 2017 10:11 am
by Antonio Linares
Please invert the order in the RC:

Here it is working fine this way

TEST DIALOG 69, 74, 180, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
FONT 11, "Arial"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
CONTROL "", 101, "TBitmap", WS_CHILD | WS_VISIBLE, 20, 17, 16, 15
CONTROL "", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 10, 5, 160, 35
}

Re: Bug in TBitmap

PostPosted: Tue Apr 04, 2017 11:09 am
by Enrico Maria Giordano
Thank you. But still doesn't work with this new RC:

Code: Select all  Expand view
TEST DIALOG 69, 74, 180, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
FONT 11, "Arial"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "", 101, "TBitmap", WS_CHILD | WS_VISIBLE, 20, 17, 16, 15
 CONTROL "", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 10, 5, 160, 35
 CONTROL "&Annulla", 201, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 70, 45, 40, 15
}


EMG

Re: Bug in TBitmap

PostPosted: Wed Apr 05, 2017 6:31 am
by Antonio Linares
It seems as this behavior and the one reported by Miacord are based on the same bug:

viewtopic.php?f=6&t=33870

I have found a workaround for it. In class TDialog these lines should be added in Method Command()

Code: Select all  Expand view
     case nID == IDCANCEL .and. ! ::lModal
           if ::lValid()
              ::bValid = nil
              ::End()
              return .T.
           endif  
           return .F.


just above case nID != 0

I appreciate if you test it as it is difficult to know what side effects may bring so it has to be tested my many users before including it in FWH

Re: Bug in TBitmap

PostPosted: Wed Apr 05, 2017 8:19 am
by Enrico Maria Giordano
Ok, I'm testing, thank you. All fine so far.

EMG