No lo probé, pero el codigo serÃa algo asÃ:
#define CRLF HB_OsNewLine()
aLines := HB_ATOKENS( cText, CRLF )
nPos := 0
nLine := 3 // linea a buscar
FOR i = 1 TO LEN( aLines ) - 1
IF i < nLine
nPos += LEN( aLines[i] ) + LEN( CRLF )
ENDIF
NEXT

Moderador: Moderadores
#define CRLF HB_OsNewLine()
aLines := HB_ATOKENS( cText, CRLF )
nPos := 0
nLine := 3 // linea a buscar
FOR i = 1 TO LEN( aLines ) - 1
IF i < nLine
nPos += LEN( aLines[i] ) + LEN( CRLF )
ENDIF
NEXT
HB_FUNC ( GOTOLINE )
{
HWND hWnd = hb_parnl (1);
int iLen = hb_parnl(2);
SendMessage( hWnd, EM_SETSEL, iLen, iLen );
SendMessage( hWnd, EM_LINEINDEX, iLen , 0 ) ;
}
asimoes escreveu:Fiz essa modificação, agora funcionou
nPos += Len( aLines[i] ) + 1 //Len( CRLF )
No meu caso sempre usei browse e a partir dele disparo todas rotinas e funções.
Fiz da mesma forma. Como vamos apagar um item por exemplo ?
asimoes escreveu:Mais uma pergunta sobre RichEdit, como pegar o texto selecionado?
// cText = RichEditBox_GetText ( hWndControl , lSelect )
HB_FUNC ( RICHEDITBOX_GETTEXT )
{
HWND hWndControl = (HWND) HMG_parnl (1);
BOOL lSelect = (BOOL) hb_parl (2);
GETTEXTLENGTHEX GTL;
GTL.flags = GTL_PRECISE;
#ifdef UNICODE
GTL.codepage = CP_UNICODE;
#else
GTL.codepage = CP_ACP;
#endif
LONG nLength = SendMessage ( hWndControl, EM_GETTEXTLENGTHEX, (WPARAM) >L, 0 );
TCHAR cBuffer [ nLength ];
GETTEXTEX GT;
GT.cb = sizeof (cBuffer);
GT.flags = ( lSelect ? GT_SELECTION : GT_DEFAULT );
#ifdef UNICODE
GT.codepage = CP_UNICODE;
#else
GT.codepage = CP_ACP;
#endif
GT.lpDefaultChar = NULL;
GT.lpUsedDefChar = NULL;
SendMessage ( hWndControl, EM_GETTEXTEX, (WPARAM) >, (LPARAM) &cBuffer );
HMG_retc ( cBuffer );
}
Usuários vendo este fórum: Google [Bot] e 7 visitantes