Page 1 of 2
Negrita en in ITEM del tree?
Posted:
Tue Aug 24, 2021 9:20 am
by goosfancito
Hola.
Quiero que al hacer un click se ponga en negrita ese ITEM del tree,
como tengo que ponerlo en negrita a ese item?
- Code: Select all Expand view
METHOD MenuPop( nRow, nCol )
LOCAL oMenu
LOCAL oItem := ::oTree:hitTest( nRow, nCol )
...
Re: Negrita en in ITEM del tree?
Posted:
Tue Aug 24, 2021 11:17 am
by Antonio Linares
hay que usar estos flags:
- Code: Select all Expand view
TV_ITEM tvi;
tvi.mask = TVIF_STATE | TVIF_HANDLE;
tvi.hItem = hItem;
tvi.state = TVIS_BOLD;
tvi.stateMask = TVIS_BOLD;
SetItem(&tvi);
ahora hay que ver como asignarlos a un item ya existente:
SetItemState( hItem, TVIS_BOLD, TVIS_BOLD );
and we may need to reset the string of the item after the
bold state was set to the item
https://www.codeproject.com/Questions/444245/Changing-to-state-of-tree-item-to-BOLD-does-not-ch
Re: Negrita en in ITEM del tree?
Posted:
Tue Aug 24, 2021 9:31 pm
by goosfancito
Nunca trabaje con los flags, no se siquiera como insertarlos en mi source.
Re: Negrita en in ITEM del tree?
Posted:
Wed Aug 25, 2021 7:42 am
by hmpaquito
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...
Re: Negrita en in ITEM del tree?
Posted:
Wed Aug 25, 2021 11:49 am
by Antonio Linares
Una primera versión:
- Code: Select all Expand view
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
}
Re: Negrita en in ITEM del tree?
Posted:
Wed Aug 25, 2021 2:11 pm
by goosfancito
por lo que veo, en el mismo source que uso el fwh puedo insertar codigo c.
es asi?
Re: Negrita en in ITEM del tree?
Posted:
Wed Aug 25, 2021 3:44 pm
by Antonio Linares
Si
En la Clase TTVItem tienes que añadir este nuevo método:
METHOD
Bold( lOnOff ) INLINE TVSetItemBold( ::oTree:hWnd, ::hItem, lOnOff )
y al final de tu PRG esribe:
- Code: Select all Expand view
#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
Re: Negrita en in ITEM del tree?
Posted:
Wed Aug 25, 2021 8:01 pm
by goosfancito
Luego de hacer las modificaciones que me indicas, puse asi y no me funcionó. Que estoy no entendiendo?
- Code: Select all Expand view
CASE nOpcion == VK_INSERT // cortar
::nHitemCortar := oItem:hitem
oItem:bold(.t.)
Re: Negrita en in ITEM del tree?
Posted:
Thu Aug 26, 2021 9:16 am
by Antonio Linares
Esta versión funciona bien aqui, muestra negrita, lo que falta es poder quitar negrita
- Code: Select all Expand view
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 );
}
Re: Negrita en in ITEM del tree?
Posted:
Thu Aug 26, 2021 12:46 pm
by goosfancito
bien, lo dejo no hay drama. sigo no es importante que lo tenga en negrita.
aca no me funciona.
gracias
Re: Negrita en in ITEM del tree?
Posted:
Thu Aug 26, 2021 3:47 pm
by Antonio Linares
El ejemplo FWH\samples\pim.prg probando el nuevo método
Bold() en Class TVItem:
El item que se ha puesto en negrita es "country"
Re: Negrita en in ITEM del tree?
Posted:
Thu Aug 26, 2021 6:59 pm
by goosfancito
Antonio
O sea que cuando lo estas creando lo pones en negrita?
porque yo intente poner en negrita uno que ya tenia creado.
Re: Negrita en in ITEM del tree?
Posted:
Fri Aug 27, 2021 5:55 am
by Antonio Linares
Los items ya estan creados, lo que se hace es cambiarlos a negrita o normal
Re: Negrita en in ITEM del tree?
Posted:
Wed Apr 27, 2022 11:08 am
by goosfancito
Antonio,
La idea de este codigo es que cuando agrego una rama "padre" me lo ponga en negrita, intento hacer esto pero me tira error
- Code: Select all Expand view
oSubItem := oItem:ADD( oQry:FieldGet( "c7" ) + " " + ::cCargo )
IF ( oSubItem:GetSelected() != NIL )
oSubItem:GetSelected():Bold()
ENDIF
Error 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 )
Re: Negrita en in ITEM del tree?
Posted:
Wed Apr 27, 2022 11:56 am
by Antonio Linares
El mensaje GetSelected tiene que enviarse al árbol, no a un item
oTree:GetSelected()