FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Asignar campos a LISTBOX
Posts: 199
Joined: Tue Apr 22, 2008 09:54 AM
Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 10:54 AM
Seguro es de caj贸n, pero no encuentro una manera pr谩ctica de asiganar los campos de una Base de datos a un LISTBOX, tengo el sigueinte c贸digo por ejemplo:

Code (fw): Select all Collapse
   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 (fw): Select all Collapse
   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!
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 11:16 AM
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 (fw): Select all Collapse
aFldDb = { Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob }


Code (fw): Select all Collapse
 聽
聽 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 (fw): Select all Collapse
oBrwBusCli = TWBrowse():Redefine( 1000, {|| aFldDb }, oDlgBusCli,,,,,,,,,,,,,,,"Cli" )
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Asignar campos a LISTBOX
Posted: Sat Aug 28, 2010 12:47 PM
Te faltan asignar tama帽os de columna:
Code (fw): Select all Collapse
 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
Posts: 199
Joined: Tue Apr 22, 2008 09:54 AM
Re: Asignar campos a LISTBOX
Posted: Mon Aug 30, 2010 06:02 AM

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!

Posts: 199
Joined: Tue Apr 22, 2008 09:54 AM
Re: Asignar campos a LISTBOX
Posted: Wed Sep 01, 2010 10:33 AM
Daniel,

Al final lo he resuelto as铆, a falta de criterio soluci贸n mejor:


Code (fw): Select all Collapse
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.

Continue the discussion