Este es el codigo del listbox:
- Code: Select all Expand view
- @09, 10 GET BUFFER PIXEL SIZE 160,12;
COLOR "B/W" OF B_CLI_V READONLY
@10, 15 SAY BUFFER PIXEL SIZE 150,10;
COLOR "B/W" OF B_CLI_V UPDATE
@ 2, 1 LISTBOX LIS_CLI FIELDS CODIGO,NOMBRE;
HEADERS "Código","Nombre";
FIELDSIZES 50,150;
UPDATE;
SIZE 300, 150 OF B_CLI_V;
COLOR "N/W";
ON CHANGE BUS_C(46,LIS_CLI)
LIS_CLI:BKEYDOWN:={|nkey,nflags|BUS_C(NKEY,LIS_CLI)}
y esta la función de búsqueda:
- Code: Select all Expand view
- FUNCTION BUS_C(NKEY,LIS_CLI)
local teclado
//msgalert(nkey)
TECLADO:={{190,"."},;
{110,"."},;
{107,"+"},;
{111,"/"},;
{106,"*"},;
{188,","},;
{189,"-"},;
{109,"-"},;
{ 32," "},;
{ 96,"0"},;
{ 97,"1"},;
{ 98,"2"},;
{ 99,"3"},;
{100,"4"},;
{101,"5"},;
{102,"6"},;
{103,"7"},;
{104,"8"},;
{105,"9"},;
{220,"§"},;
{221,"¦"},; /// esto ya es a la desesperada
{219,"█"},; /// esto ya es a la desesperada
{192,"¥"}}
DO CASE
CASE NKEY=46
BUFFER=SPACE(0)
LIS_CLI:REFRESH()
B_CLI_V:UPDATE()
RETURN .T.
CASE NKEY=8
IF .NOT. EMPTY(BUFFER)
BUFFER=LEFT(BUFFER,LEN(BUFFER)-1)
ENDIF
CASE NKEY=13
B_CLI_V:END()
CABALB[4]=CODIGO
CABALB[5]=NOMBRE
IF !EMPTY(NOMBRECOM)
aDATOS_CLI[1]=NOMBRECOM
ELSE
aDATOS_CLI[1]=NOMBRE
ENDIF
CABALB[5]=aDATOS_CLI[1]
aDATOS_CLI[2]=DIRECCION
aDATOS_CLI[3]=POBLACION
aDATOS_CLI[4]=PROVINCIA
RETURN .T.
CASE NKEY=27
B_CLI_V:END()
CABALB[4]=SPACE(5)
RETURN .T.
CASE NKEY>=48 .AND. NKEY<=57
BUFFER+=CHR(NKEY)
CASE NKEY>=65 .AND. NKEY<=90
BUFFER+=CHR(NKEY)
OTHERWISE
FOR N=1 TO LEN(TECLADO)
IF TECLADO[N,1]=NKEY
BUFFER+=OEMTOANSI(TECLADO[N,2])
ENDIF
NEXT
ENDCASE
IF ISALPHA(BUFFER)
DBSETORDER(2)
BUSCA=BUFFER
SET SOFTSEEK ON
SEEK BUSCA
SET SOFTSEEK OFF
if !found()
DBSETORDER(3)
SET SOFTSEEK ON
SEEK BUSCA
SET SOFTSEEK OFF
if !found()
DBSETORDER(2)
endif
endif
ELSE
DBSETORDER(1)
BUSCA=CEROS(5,BUFFER)
SET SOFTSEEK ON
SEEK BUSCA
SET SOFTSEEK OFF
ENDIF
LIS_CLI:REFRESH()
B_CLI_V:UPDATE()
RETURN .T.
Con letras y números funciona perfectamente, pero tengo problemas con los textos de º , ª, €, @, ...
No se como hacerlo, y hay un cliente que me ha metido ya miles de clientes y muchos de ellos son mª josé.... mª carmen.... y claro, el listbox no busca. Por favor ¿alguna sugerencia? gracias.