CLIPPER TABSETITEM( PARAMS ) // hWnd, nItem, cPrompt
{
HWND hWnd = _parni( 1 );
int nItem = _parni( 2 );
_bset( ( char * ) &item, 0, sizeof( item ) );
SendMessage( hWnd, TCM_GETITEM, nItem, ( LONG ) &item );
#ifndef UNICODE
item.pszText = _parc( 3 );
#else
item.pszText = AnsiToWide( _parc( 3 ) );
#endif
SendMessage( ( hWnd, TCM_SETITEM, nItem, ( LONG ) &item );
#ifdef UNICODE
hb_xfree( item.pszText );
#endif
}
#include "fivewin.ch"
#include "xbrowse.ch"
function main()
local oDlg, oBrw, oFld
local aArray := {}
local nI
for nI = 1 to 10
aadd( aArray,{ strzero( nI, 2 ), ;
"Row: "+strzero( nI,2 )+" Item 1",;
"Row: "+strzero( nI,2 )+" Item 2",;
"Row: "+strzero( nI,2 )+" Item 3",;
"Row: "+strzero( nI,2 )+" Item 4",;
"Row: "+strzero( nI,2 )+" Item 5" } )
next
define Dialog oDlg title "TFolder - xBrowse" size 600,300
@ 0,0 xbrowse oBrw array aArray columns {1,2,3,4,5,6} headers {"Item","Data","Data","Data","Data","Data"} of oDlg;
COLSIZES {80,80,80,80,80,80 } size 150,150
oBrw:bChange := {|| oFld:SetPrompts( {oBrw:aRow[2], oBrw:aRow[3], oBrw:aRow[4], oBrw:aRow[5], oBrw:aRow[6]} ), oFld:refresh() }
@ 0,155 folder oFld of oDlg prompt aArray[ 1,2 ], aArray[ 1,3 ], aArray[ 1,4 ], aArray[ 1,5 ], aArray[ 1,6 ] pixel;
size 150,150
oBrw:createfromcode()
activate dialog oDlg
return nil
HB_FUNC( TABSETITEM ) // hWnd, nItem, cPrompt
{
int nItem = hb_parni( 2 );
TCHAR pszText[256]={0};
TC_ITEM item;
ZeroMemory(&item, sizeof(TC_ITEM));
item.mask = TCIF_TEXT;
item.pszText = pszText;
item.cchTextMax = sizeof(pszText);
SendMessage( ( HWND ) hb_parni(1), TCM_GETITEM, nItem, ( LONG ) &item );
#ifndef UNICODE
item.pszText = hb_parc( 3 );
#else
item.pszText = AnsiToWide( hb_parc( 3 ) );
#endif
SendMessage( ( HWND ) hb_parni(1), TCM_SETITEM, nItem, ( LONG ) &item );
#ifdef UNICODE
hb_xfree( item.pszText );
#endif
}
Biel EA6DD wrote:Perfecto, ya lo he conseguido. Es algo rebuscado pero funciona bien.
Lo que hago es desactivar el repintado del tab (SendMessage( hWnd, WM_SETREDRAW , 0,0) ) , cambio el texto del item. Y para que se refresque solo el texto y no tener que repintar todo el tab, selecciono el item (TCM_SETCURSEL), y acto seguido reselecciono el item original.
Lo que hago es desactivar el repintado del tab (SendMessage( hWnd, WM_SETREDRAW , 0,0) ) , cambio el texto del item. Y para que se refresque solo el texto y no tener que repintar todo el tab, selecciono el item (TCM_SETCURSEL), y acto seguido reselecciono el item original.
Antonio Linares wrote:
Si quieres lo anadimos como un nuevo metodo a la clase TFolder.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 33 guests