FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Problems with Checkbox
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Re: Problems with Checkbox
Posted: Tue May 10, 2011 10:36 AM

Enrico

I agree, i think we need Antonio for this now

Richard

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
Re: Problems with Checkbox
Posted: Tue May 10, 2011 11:29 AM

Antonio is with TheFull now!!!!

Best Regards, Saludos



Falconi Silvio
Posts: 990
Joined: Thu Nov 17, 2005 05:49 PM
Re: Problems with Checkbox
Posted: Tue May 10, 2011 07:20 PM
Hi everyone.

The checkbox problem is really becoming annoying. Here is a self contained reduced sample that reproduces the problem:
Code (fw): Select all Collapse
#include "fivewin.ch"

function main()
local oDlg, oChk, oGet1, oGet2
local bNew, bEdit, bSave, bCancel 
local lChk1, lChk2, lChk3
local lEdit         := .f.
local cJob          := ''
local cRevCode  := Spac( 10 )
local cDesc         := Spac( 30 )

   bnew    := {|| lEdit := .T., cJob := 'NEW', oDlg:update(), ;
                     oDlg:aEvalWhen(), oGet1:setFocus() }

   bEdit   := {|| lEdit := .T., cJob := 'EDIT', ;
                      oDlg:update(), oDlg:aEvalWhen(), ;
                      oGet2:setFocus() }

   bSave   := {|| oDlg:update(), lEdit := .F., cJob := '', oDlg:aEvalWhen() }
   bCancel := {|| lEdit := .F., cJob := '', oDlg:aEvalWhen(), oDlg:update(), .F. }

   DEFINE DIALOG oDlg RESOURCE "RevCode" TRANSPARENT COLOR CLR_BLUE, RGB(240,240,240)

   REDEFINE BUTTONBMP ID 127 OF oDlg ACTION EVAL( bNew )    WHEN ! lEdit
   REDEFINE BUTTONBMP ID 128 OF oDlg ACTION Eval( bEdit )   WHEN ! lEdit
   REDEFINE BUTTONBMP ID 129 OF oDlg WHEN ! lEdit
   REDEFINE BUTTONBMP ID 132 OF oDlg ACTION Eval( bSave )   WHEN lEdit
   REDEFINE BUTTONBMP ID 133 OF oDlg ACTION Eval( bCancel ) WHEN lEdit

   REDEFINE GET oGet1 VAR cRevCode ID 101 OF oDlg UPDATE WHEN lEdit .AND. cJob = 'NEW'
   REDEFINE GET oGet2 VAR cDesc    ID 102 OF oDlg UPDATE WHEN lEdit 
   
   REDEFINE CHECKBOX oChk VAR lchk1 ID 106 OF oDlg UPDATE ;
       WHEN lEdit
       
    oChk:bChange := { || oDlg:Update() }
    
   REDEFINE CHECKBOX lChk2 ID 107 OF oDlg UPDATE ;
       WHEN lEdit .and. lChk1
       
   REDEFINE CHECKBOX lChk3 ID 108 OF oDlg UPDATE ;
       WHEN lEdit .and. lChk1
   
   REDEFINE BUTTONBMP ID 126 OF oDlg ACTION oDlg:END() WHEN ! lEdit

   ACTIVATE DIALOG oDlg ;
   VALID IF( GetKeyState(VK_ESCAPE) .AND. lEdit, ;
            EVAL( bCancel ), .t. )
    
    RETURN NIL


And this is revcode.rc:
Code (fw): Select all Collapse
REVCODE DIALOG 30, 21, 405, 101
STYLE DS_3DLOOK |DS_SETFONT |DS_MODALFRAME |WS_POPUP |WS_VISIBLE |WS_SYSMENU |WS_CAPTION 
CAPTION "Centros de Costo"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, 0
BEGIN
  CONTROL "",1001,"BUTTON",BS_GROUPBOX |WS_CHILD |WS_VISIBLE ,9,20,392,53
  CONTROL "",101,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,100,28,92,12
  CONTROL "",102,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,100,42,169,12
  CONTROL "    Nuevo",127,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,6,7,50,14
  CONTROL "    Modificar",128,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,60,7,50,14
  CONTROL "    Grabar",132,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,167,7,50,14
  CONTROL "     Cancelar",133,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,221,7,50,14
  CONTROL "    Salir",126,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,348,78,50,14
  CONTROL "Centro De Costo",65535,"STATIC",SS_RIGHT |WS_CHILD |WS_GROUP |WS_VISIBLE ,10,31,75,8
  CONTROL "Descripción",65535,"STATIC",SS_RIGHT |WS_CHILD |WS_GROUP |WS_VISIBLE ,10,44,75,8
  CONTROL "    Eliminar",0,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,73,289,50,14
  CONTROL "    Eliminar",129,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,113,7,50,14
  CONTROL "Crear Orden",106,"BUTTON",BS_CHECKBOX |BS_LEFT |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,305,31,70,10
  CONTROL "Imprimir Orden",107,"BUTTON",BS_CHECKBOX |BS_LEFT |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,305,42,70,10
  CONTROL "Imprimir Etiqueta",108,"BUTTON",BS_CHECKBOX |BS_LEFT |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,305,54,70,10
END


Image on program startup (Notice how the border is erased):


Image after clicking on "Nuevo" o "Modificar" (notice some controls are erased):


It is all reproducible with the sample code and .rc attached.

Is there an official solution?


Reinaldo.
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Re: Problems with Checkbox
Posted: Wed May 11, 2011 08:10 AM

Reinaldo

I have tested your sample and the problem shows obviously , the only solution i found is to link my modified control.prg that I published , the problem disappears and checkbox show ok

HTH

Richard

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Problems with Checkbox
Posted: Wed May 11, 2011 08:21 AM

I will be back tomorrow morning in my office and I will personally check it, thanks! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Wed May 11, 2011 09:01 AM

Thank you Master!

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
Re: Problems with Checkbox
Posted: Wed May 11, 2011 02:28 PM

Antonio,
on x,y source code run ok the problem is only on resources !!!!!!!!!!

Best Regards, Saludos



Falconi Silvio
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Problems with Checkbox
Posted: Fri May 13, 2011 12:43 PM

Antonio,

I tested the original examples in FWH\samples regarding the RADIO controll problems .

testrad resource in RC -> OK
testrad2 no resource -> ERROR
testrad3 rsource in DLL -> OK
testrad5 no resource -> ERROR
testrad6 no resource -> OK

I use :WindowsXP , FW 11.04 ,xHArbour , BCC 582 .

This problem has been around for a long time and now we need a solution. :cry:

Maurizio

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Sun May 15, 2011 09:20 AM
Enrico Maria Giordano wrote:the first thing we have to know is what DrawPBack() is for.


DrawPBack() draws the background of the parent control containing the transparent object.

We have to test radios and checkboxes inside a folder too.

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Sun May 15, 2011 09:52 AM
This is a sample. Please test it with and without theme manifest. Unfortunately TEST1 dialog without folder doesn't seem to work (without themes) even if I comment out DrawPBack() calls:

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    TEST1()
    TEST2()

    RETURN NIL


STATIC FUNCTION TEST1()

    LOCAL oDlg

    LOCAL oCk1, lCk1 := .F.
    LOCAL oCk2, lCk2 := .F.

    LOCAL oRad, nRad := 1

    DEFINE DIALOG oDlg;
           RESOURCE "TEST1";
           TRANSPARENT

    REDEFINE CHECKBOX oCk1 VAR lCk1;
             ID 101 OF oDlg

    REDEFINE CHECKBOX oCk2 VAR lCk2;
             ID 102 OF oDlg

    REDEFINE RADIO oRad VAR nRad;
             ID 103, 104 OF oDlg

    ACTIVATE DIALOG oDlg;
             ON INIT GRADIENTBRUSH( oDlg, ACLRGRAD() );
             CENTER

    RETURN NIL


STATIC FUNCTION TEST2()

    LOCAL oDlg, oFld

    LOCAL oCk1, lCk1 := .F.
    LOCAL oCk2, lCk2 := .F.

    LOCAL oRad, nRad := 1

    DEFINE DIALOG oDlg;
           RESOURCE "TEST2F"

    REDEFINE FOLDER oFld;
             ID 101 OF oDlg;
             PROMPTS "Test 2";
             DIALOGS "TEST2D"

    REDEFINE CHECKBOX oCk1 VAR lCk1;
             ID 101 OF oFld:aDialogs[ 1 ]

    REDEFINE CHECKBOX oCk2 VAR lCk2;
             ID 102 OF oFld:aDialogs[ 1 ]

    REDEFINE RADIO oRad VAR nRad;
             ID 103, 104 OF oFld:aDialogs[ 1 ]

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL


STATIC FUNCTION GRADIENTBRUSH( oDlg, aColors )

    LOCAL hDC, hBmp, hBmpOld, oBrush

    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 )

    oBrush = TBrush():New( ,,,, hBmp )

    oDlg:SetBrush( oBrush )

    AEVAL( oDlg:aControls, { | oCtl | If( oCtl:lTransparent, oCtl:SetBrush( oDlg:oBrush ), ) } )

    RELEASE BRUSH oBrush

    SELECTOBJECT( hDC, hBmpOld )

    DELETEDC( hDC )

    oDlg:ReleaseDC()

    RETURN NIL


STATIC FUNCTION ACLRGRAD()

    RETURN { { 1, RGB( 216, 230, 238 ), RGB( 103, 154, 194 ) } }


EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Sun May 15, 2011 10:55 AM
IsAppThemed() returns .T. even if the app has not the manifest file linked in the resources. How can I test if there is the manifest file in the resources? I need it to solve the problem that is the object of this thread. I already tried using FindResource() but it doesn't seem to work.

In the meantime, please try my previous sample without manifest file and with the following changes to control.prg:

- both DrawPBack() calls commented out

- the following line reactivated:

Code (fw): Select all Collapse
::oWnd:Refresh( .f. )   // EMG commented out to avoid flicker


Then test the same sample with manifest and with the following changes to control.prg:

- the first call to DrawPBack() commented out, the second activated

- the following line commented out:

Code (fw): Select all Collapse
//              ::Refresh( .f. )   // EMG commented out to avoid flicker


Please let me know.

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Sun May 15, 2011 03:53 PM
Please add the following code to my sample:

Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <windows.h>

HMODULE GetResources( void );
HMODULE GetInstance( void );

HB_FUNC( ISMANIFEST )
{
   static BOOL bInit = FALSE;
   static BOOL bIsThemed = FALSE;

   if( ! bInit )
   {
    WIN32_FIND_DATA fd;
    
      bInit = TRUE;
      bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ),
                  MAKEINTRESOURCE( 24 ) ) ) ||
                  ( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ),
                  MAKEINTRESOURCE( 24 ) ) ) );
                  
      if( ! bIsThemed )
      {
         char AppName[ 256 ];
         HANDLE hFind;
        
         GetModuleFileName( NULL, AppName, 255 );
         lstrcat( AppName, ".Manifest" );
         
         if( ( hFind = FindFirstFile( AppName, &fd ) ) != INVALID_HANDLE_VALUE )
         {
            bIsThemed = TRUE;
            FindClose( hFind );
         }
      }      
   }

   hb_retl( bIsThemed );
}

#pragma ENDDUMP


Then change control.prg so that this

Code (fw): Select all Collapse
      if IsAppThemed() .and. Upper( ::ClassName() ) $ "TCHECKBOX;TRADIO;TGROUP"
         DrawPBack( ::hWnd,  hDC )
      endif


become this

Code (fw): Select all Collapse
      if IsAppThemed() .and. IsManifest() .and. Upper( ::ClassName() ) $ "TCHECKBOX;TRADIO;TGROUP"
         DrawPBack( ::hWnd,  hDC )
      endif


and this

Code (fw): Select all Collapse
           if ::lTransparent .and. ( ::IsKindOf( "TRADIO" ) .or. ::IsKindOf( "TCHECKBOX" ) )
              ::oWnd:Refresh( .f. )   // EMG commented out to avoid flicker
           endif


become this

Code (fw): Select all Collapse
           if ::lTransparent .and. !IsManifest() .and. ( ::IsKindOf( "TRADIO" ) .or. ::IsKindOf( "TCHECKBOX" ) )
              ::oWnd:Refresh( .f. )   // EMG commented out to avoid flicker
           endif


Try and let me know.

EMH
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Problems with Checkbox
Posted: Tue May 17, 2011 12:55 PM

Ciao Enrico,

dall'esempio TEST1.PRG manca TEST1.TC

Maurizio

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Problems with Checkbox
Posted: Tue May 17, 2011 01:32 PM
Here it is:

Code (fw): Select all Collapse
TEST1 DIALOG 37, 56, 160, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 1"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "Checkbox:", 101, "BUTTON", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 10, 50, 12
 CONTROL "Checkbox:", 102, "BUTTON", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 25, 50, 12
 CONTROL "Radio:", 103, "BUTTON", BS_AUTORADIOBUTTON | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE, 10, 45, 50, 12
 CONTROL "Radio:", 104, "BUTTON", BS_AUTORADIOBUTTON | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE, 10, 60, 50, 12
}


TEST2D DIALOG 37, 56, 145, 80
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "Checkbox:", 101, "BUTTON", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 10, 50, 12
 CONTROL "Checkbox:", 102, "BUTTON", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 25, 50, 12
 CONTROL "Radio:", 103, "BUTTON", BS_AUTORADIOBUTTON | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE, 10, 45, 50, 12
 CONTROL "Radio:", 104, "BUTTON", BS_AUTORADIOBUTTON | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE, 10, 60, 50, 12
}


TEST2F DIALOG 96, 44, 180, 115
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 2"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
 CONTROL "", 101, "SysTabControl32", 0 | WS_CHILD | WS_VISIBLE, 5, 5, 170, 105
}


EMG

Continue the discussion