Problema con LISTBOX

Post Reply
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Problema con LISTBOX

Post by triumvirato »

Tengo el siguiente código que funciona bien:

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, oLbx
   local cItem := ""
   local aLista := {}
   local n := 0

   For n = 1 To 10
       Aadd( aLista, "hola" )
   Next

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE LISTBOX oLbx VAR cItem ITEMS aLista ID 110 OF oDlg

   ACTIVATE DIALOG oDlg CENTERED

return nil
Si sustiumos:

Code: Select all

   For n = 1 To 10
       Aadd( aLista, "hola" )
   Next
Por:

Code: Select all

   For n = 1 To 10
       Aadd( aLista, { "hola", "adios" } )
   Next
Se produce un error Windows, que dice:

xxxxxxxxxx.Exe ha detectado un problema y debe cerrarse.
Si está en pleno proceso, puede perderse la información con la que esté trabajando.

Informe a Microsoft de este problema.
Se ha creado un informe de errores que puede...

Y las opciones de costumbre: Enviar informe de errores ó No enviar.

El fichero .RC: (por si estuviese aquí el problema)

Code: Select all

#define DIALOG_1	1


test DIALOG 152, 107, 207, 111
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ListBox"
FONT 8, "MS Sans Serif"
{
 LISTBOX 110, 25, 6, 116, 91, LBS_STANDARD
}

Entiendo que LISTBOX no soporta arrays multidimensionales...?? pero necesito mostrar un array de _.

Alguna sugerencia?

Gracias!
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post by Willi Quintana »

Hazlo asi: Salu2

Código:

#include "FiveWin.ch"

function Main()

local oDlg, oLbx
local cItem := ""
local aLista := {}
local n := 0

For n = 1 To 10
Aadd( aLista, {"hola","adios"} )
Next

DEFINE DIALOG oDlg RESOURCE "Test"

REDEFINE LISTBOX oLbx ;
HEADERS "titulo1","titulo2" ;
FIELDS aLista[oLbx:nAt, 1], aLista[oLbx:nAt, 2] :
ID 110 OF oDlg

oLbx:SetArray(aLista)


ACTIVATE DIALOG oDlg CENTERED

return nil

i en el .RC ysa un control TWBROWSE
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post by triumvirato »

Willi, gracias por tu ayuda y enhorabuena por tu hijo... por cierto, yo he tenido el primero el 17/09... toda una experiencia eh!?

Al compilar tu código, me sale el siguiente error de compilación:

C:\kk\lbxdraw.prg(19) Error E0030 Syntax error: "syntax error at 'LISTBOX'"

1 error

No code generated

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, oLbx
   local cItem := ""
   local aLista := {}
   local n := 0

   For n = 1 To 10
       Aadd( aLista, { "hola", "adios" } )
   Next

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE LISTBOX oLbx ; 
            HEADERS "titulo1","titulo2" ; 
            FIELDS aLista[oLbx:nAt, 1], aLista[oLbx:nAt, 2];
            ID 110 OF oDlg 

   oLbx:SetArray(aLista) 

   ACTIVATE DIALOG oDlg CENTERED

return nil
El .RC modificado:

Code: Select all

#define DIALOG_1   1 


test DIALOG 152, 107, 207, 111
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ListBox"
FONT 8, "MS Sans Serif"
{
 CONTROL "", 110, "TWBrowse", 0 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 9, 14, 189, 77
}
Gracias por tu ayuda!
fleal
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

para ver el array

Post by fleal »

Aquí otra forma de mostrar array

#include "FiveWin.ch"

function Main()

local oDlg, oLbx
local cItem := ""
local aLista := {}
local n := 0
local nItem := 1

For n = 1 To 10
Aadd( aLista, "hola" )
Next

DEFINE DIALOG oDlg RESOURCE "Test"

REDEFINE LISTBOX oLbx ;
FIELDS aLista[nItem][1], aLista[nItem][2] ;
HEADERS "Titulo 1","Titulo 2" ;
ID 110 UPDATE OF oDlg


oLbx:bGoTop := { || nItem := 1 }
oLbx:bGoBottom := { || nItem := Eval( oLbx:bLogicLen ) }
oLbx:bSkip := { | nWant, nOld | nOld := nItem, nItem += nWant,;
nItem := Max( 1, Min( nItem, Eval( oLbx:bLogicLen ) ) ),;
nItem - nOld }
oLbx:bLogicLen := { || Len( aLista ) }
oLbx:cAlias := "Array"
oLbx:nLineStyle := 0



ACTIVATE DIALOG oDlg CENTERED

return nil
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post by triumvirato »

Ok, muchas gracias, ya lo tengo solucionado.

Saludos!
Post Reply