Page 1 of 1
Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 10:54 am
by triumvirato
Seguro es de cajón, pero no encuentro una manera práctica de asiganar _ de una Base de datos a un LISTBOX, tengo el sigueinte código por ejemplo:
Code: Select all
REDEFINE LISTBOX oBrwBusCli;
FIELDS Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob;
ID 1000 OF oDlgBusCli ALIAS "Cli"
y busco poder hacer algo como esto:
Code: Select all
REDEFINE LISTBOX oBrwBusCli;
FIELDS aFldDb; //Array, queda el crear una expresión en una variable por ejemplo &cFldDb
ID 1000 OF oDlgBusCli ALIAS "Cli"
He echado un ojo a la clase Listbox.prg, pero no encuentro una manera práctica de hacerlo.
Seguramente sea algo fácil o trivial, pero no he encontrado nada similar por el foro.
Gracias y Saludos!
Re: Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 11:16 am
by Daniel Garcia-Gil
Triumvirato
De esa forma no lo podras hacer, el comando crea un codeblock (no un array ) con los "fields" a mostrar intentalo de esta forma:
Code: Select all
aFldDb = { Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob }
Code: Select all
REDEFINE LISTBOX oBrwBusCli;
FIELDS NIL; //Array, queda el crear una expresión en una variable por ejemplo &cFldDb
ID 1000 OF oDlgBusCli ALIAS "Cli"
oBrwBusCli:bLine = {|| aFldDb }
o de esta otra forma
Code: Select all
oBrwBusCli = TWBrowse():Redefine( 1000, {|| aFldDb }, oDlgBusCli,,,,,,,,,,,,,,,"Cli" )
Re: Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 12:47 pm
by Willi Quintana
Te faltan asignar tamaños de columna:
Code: Select all
REDEFINE LISTBOX oBrwBusCli;
FIELDS Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob;
HEADERS "Campo1", "Campo2", "Campo3", "Campo4", "Campo5", "Campo6" ;
SIZES 80,80,80,80,80,80 ;
ID 1000 OF oDlgBusCli
Re: Asignar campos a LISTBOX
Posted: Mon Aug 30, 2010 6:02 am
by triumvirato
Daniel,
Al hacerlo de cualquiera de los dos modos que propones, el Browse toma un registro de la base de datos aleatorio y lo repite en todos los registros del Browse...
Muchas gracias por tu ayuda.
Willi,
Cierto, me faltaban esas definiciones en mi código, pero en este caso las omití a propósito para simplificar al máximo posible mi ejemplo, siempre procuro hacerlo para que las respuestas de quien me ayuda puedan ser más concisas y sobre todo, no haceros perder mucho el tiempo leyendo mi código a aquellos que como tú me ayudáis. De ahí que intente siempre simplificar al máximo.
Por cierto, tu hijo ya va a hacer dos años? como crecen estos "enanos", parece que fué ayer, verdad?.
Muchísimas gracias por tu apunte, Willi.
Saludos!
Re: Asignar campos a LISTBOX
Posted: Wed Sep 01, 2010 10:33 am
by triumvirato
Daniel,
Al final lo he resuelto así, a falta de criterio solución mejor:
Code: Select all
aFldBrw := { "Cli_Cod", "Cli_Nom", "Cli_Tel", "Cli_Te2", "Cli_Dir", "Cli_Pob" }
cAlias := "Cli"
......
cFldBrw := ""
for nVarFor = 1 to Len( aFldBrw )
cFldBrw += cAlias + "->" + aFldBrw[ nVarFor ] + ", "
next
cFldBrw := SubStr( cFldBrw, 1, Len( cFldBrw ) - 2 )
REDEFINE LISTBOX oBrwBusCli;
FIELDS &cFldBrw;
ID 1000 OF oDlgBusCli ALIAS "Cli"
Saludos.