I have a Tree with TVS_CHECKBOXES.
Is it possible to know if CHECKBOX is ON or OFF ( without use :Cargo ) ?
Regards Maurizio
HB_FUNC( TVISCHECKED ) // hTreeView, hItem
{
hb_retl( TreeView_GetCheckState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ) ) );
}
HB_FUNC( TVSETCHECK ) // hTreeView, hItem, lOnOff
{
hb_retl( TreeView_SetCheckState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), hb_parl( 3 ) ) );
}
...
METHOD SetCheck( nIt, lFlag ) INLINE TVSetCheck( ::hWnd, nIt, lFlag )
METHOD IsChecked( nIt ) INLINE TVIsChecked( ::hWnd, nIt )
...
#pragma BEGINDUMP
#include "windows.h"
#include "commctrl.h"
#include "hbapi.h"
HB_FUNC( TVSETCHECK ) // hTreeView, hItem, lOnOff
{
TVITEM tvItem;
HWND hWnd = ( HWND ) hb_parnl( 1 );
HTREEITEM hItem = ( HTREEITEM ) hb_parnl( 2 );
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = hItem;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
/*
Since state images are one-based, 1 in this macro turns the check off,
and
2 turns it on.
*/
tvItem.state = INDEXTOSTATEIMAGEMASK(( hb_parl( 3 ) ? 2 : 1));
hb_retl( ( BOOL ) TreeView_SetItem( ( HWND ) hb_parnl( 1 ), &tvItem ) );
}
HB_FUNC( TVISCHECKED ) // hTreeView, hItem
{
TVITEM tvItem;
HWND hWnd = ( HWND ) hb_parnl( 1 );
HTREEITEM hItem = ( HTREEITEM ) hb_parnl( 2 );
// Prepare to receive the desired information.
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = hItem;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
// Request the information.
hb_retl( ( BOOL ) TreeView_GetItem( ( HWND ) hb_parnl( 1 ), &tvItem ) );
// Return zero if it's not checked, or nonzero otherwise.
hb_retl( (BOOL) (tvItem.state >> 12) -1 ) ;
}
#pragma ENDDUMP
Para Setar o status:
oTree:SetCheck( oItem:hItem, .F. ) && Uncheck
ou
oTree:SetCheck( oItem:hItem, .T. ) && check
Para Ler o status:
msgstop( oTree:IsChecked( oItem:hItem ) )
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: No registered users and 85 guests