Problems with Checkbox
- Richard Chidiak
- Posts: 946
- Joined: Thu Oct 06, 2005 7:05 pm
- Location: France
- Contact:
Re: Problems with Checkbox
Enrico
I agree, i think we need Antonio for this now
Richard
I agree, i think we need Antonio for this now
Richard
- reinaldocrespo
- Posts: 918
- Joined: Thu Nov 17, 2005 5:49 pm
- Location: Fort Lauderdale, FL
Re: Problems with Checkbox
Hi everyone.
The checkbox problem is really becoming annoying. Here is a self contained reduced sample that reproduces the problem:
And this is revcode.rc:
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.
The checkbox problem is really becoming annoying. Here is a self contained reduced sample that reproduces the problem:
Code: Select all
#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
Code: Select all
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 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.
- Richard Chidiak
- Posts: 946
- Joined: Thu Oct 06, 2005 7:05 pm
- Location: France
- Contact:
Re: Problems with Checkbox
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Problems with Checkbox
I will be back tomorrow morning in my office and I will personally check it, thanks!
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
Antonio,
on x,y source code run ok the problem is only on resources !!!!!!!!!!
on x,y source code run ok the problem is only on resources !!!!!!!!!!
Best Regards, Saludos
Falconi Silvio
Falconi Silvio
Re: Problems with Checkbox
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.
Maurizio
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.
Maurizio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
DrawPBack() draws the background of the parent control containing the transparent object.Enrico Maria Giordano wrote:the first thing we have to know is what DrawPBack() is for.
We have to test radios and checkboxes inside a folder too.
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
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:
EMG
Code: Select all
#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 ) } }
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
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:
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:
Please let me know.
EMG
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: Select all
::oWnd:Refresh( .f. ) // EMG commented out to avoid flicker
- the first call to DrawPBack() commented out, the second activated
- the following line commented out:
Code: Select all
// ::oWnd:Refresh( .f. ) // EMG commented out to avoid flicker
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
Please add the following code to my sample:
Then change control.prg so that this
become this
and this
become this
Try and let me know.
EMH
Code: Select all
#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
Code: Select all
if IsAppThemed() .and. Upper( ::ClassName() ) $ "TCHECKBOX;TRADIO;TGROUP"
DrawPBack( ::hWnd, hDC )
endif
Code: Select all
if IsAppThemed() .and. IsManifest() .and. Upper( ::ClassName() ) $ "TCHECKBOX;TRADIO;TGROUP"
DrawPBack( ::hWnd, hDC )
endif
Code: Select all
if ::lTransparent .and. ( ::IsKindOf( "TRADIO" ) .or. ::IsKindOf( "TCHECKBOX" ) )
::oWnd:Refresh( .f. ) // EMG commented out to avoid flicker
endif
Code: Select all
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
Re: Problems with Checkbox
Ciao Enrico,
dall'esempio TEST1.PRG manca TEST1.TC
Maurizio
dall'esempio TEST1.PRG manca TEST1.TC
Maurizio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Problems with Checkbox
Here it is:
EMG
Code: Select all
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
}