Quiero que al hacer un click se ponga en negrita ese ITEM del tree,
como tengo que ponerlo en negrita a ese item?
METHOD MenuPop( nRow, nCol )
LOCAL oMenu
LOCAL oItem := ::oTree:hitTest( nRow, nCol )
...METHOD MenuPop( nRow, nCol )
LOCAL oMenu
LOCAL oItem := ::oTree:hitTest( nRow, nCol )
... TV_ITEM tvi;
tvi.mask = TVIF_STATE | TVIF_HANDLE;
tvi.hItem = hItem;
tvi.state = TVIS_BOLD;
tvi.stateMask = TVIS_BOLD;
SetItem(&tvi);Nunca trabaje con los flags, no se siquiera como insertarlos en mi source.
Hace un monton de años coloree el tree modificando los fuentes y a base de pasar parametros a TreeDraw.c y tambien modificando el TreeView.prg-> DrawItem()
No tengo lo de poner en negrita al pulsar un item. Eso requeriria dinamismo en los colores: Refrescar el tree cada vez que se pulse un item... o eso creo...
HB_FUNC( TVSETITEMBOLD ) // ( hWnd, hTreeItem, lBold ) --> lSuccess
{
UINT uiMask;
#ifndef _WIN64
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), &uiMask ) );
#else
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), &uiMask ) );
#endif
#ifndef _WIN64
TreeView_SetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), &uiMask, hb_parl( 3 ) ? TVIS_BOLD: 0 );
#else
TreeView_SetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), &uiMask, hb_parl( 3 ) ? TVIS_BOLD: 0 );
#endif
}por lo que veo, en el mismo source que uso el fwh puedo insertar codigo c.
es asi?
#pragma BEGINDUMP
#define _WIN32_IE 0x0500
#include <Windows.h>
#include <CommCtrl.h>
#include <hbapi.h>
HB_FUNC( TVSETITEMBOLD ) // ( hWnd, hTreeItem, lBold ) --> lSuccess
{
UINT uiMask1, uiMask2 = 0;
#ifndef _WIN64
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), &uiMask1 ) );
#else
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), &uiMask1 ) );
#endif
if( hb_parl( 3 ) )
uiMask2 = TVIS_BOLD;
#ifndef _WIN64
TreeView_SetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), uiMask1, uiMask2 );
#else
TreeView_SetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), uiMask1, uiMask2 );
#endif
}
#pragma ENDDUMP CASE nOpcion == VK_INSERT // cortar
::nHitemCortar := oItem:hitem
oItem:bold(.t.)HB_FUNC( TVSETITEMBOLD ) // ( hWnd, hTreeItem, lBold ) --> lSuccess
{
UINT uiMask1, uiMask2 = 0, bBold = hb_parl( 3 );
#ifndef _WIN64
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), &uiMask1 ) );
#else
hb_retl( TreeView_GetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), &uiMask1 ) );
#endif
if( bBold )
uiMask2 = TVIS_BOLD;
else
uiMask1 = uiMask1 ^ TVIS_BOLD;
#ifndef _WIN64
TreeView_SetItemState( ( HWND ) hb_parnl( 1 ), ( HTREEITEM ) hb_parnl( 2 ), uiMask1, uiMask2 );
#else
TreeView_SetItemState( ( HWND ) hb_parnll( 1 ), ( HTREEITEM ) hb_parnll( 2 ), uiMask1, uiMask2 );
#endif
hb_retl( uiMask1 & TVIS_BOLD );
}bien, lo dejo no hay drama. sigo no es importante que lo tenga en negrita.
aca no me funciona.
gracias
Antonio
O sea que cuando lo estas creando lo pones en negrita?
porque yo intente poner en negrita uno que ya tenia creado.
Los items ya estan creados, lo que se hace es cambiarlos a negrita o normal
oSubItem := oItem:ADD( oQry:FieldGet( "c7" ) + " " + ::cCargo )
IF ( oSubItem:GetSelected() != NIL )
oSubItem:GetSelected():Bold()
ENDIFError description: Error BASE/1004 Message not found: TTVITEM:GETSELECTED
Args:
[ 1] = O TTVITEM
Stack Calls
===========
Called from: => __ERRRT_SBASE( 0 )
Called from: ../../../tobject.prg => TTVITEM:ERROR( 148 )
El mensaje GetSelected tiene que enviarse al árbol, no a un item
oTree:GetSelected()