Problema con LISTBOX

Problema con LISTBOX

Postby triumvirato » Wed Oct 15, 2008 4:24 pm

Tengo el siguiente código que funciona bien:

Code: Select all  Expand view  RUN
#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  Expand view  RUN
   For n = 1 To 10
       Aadd( aLista, "hola" )
   Next


Por:
Code: Select all  Expand view  RUN
   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  Expand view  RUN
#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 varios campos.

Alguna sugerencia?

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

Postby Willi Quintana » Wed Oct 15, 2008 5:05 pm

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
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Postby triumvirato » Wed Oct 15, 2008 5:57 pm

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  Expand view  RUN
#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  Expand view  RUN
#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!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

para ver el array

Postby fleal » Wed Oct 15, 2008 8:08 pm

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
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Postby triumvirato » Thu Oct 16, 2008 8:46 am

Ok, muchas gracias, ya lo tengo solucionado.

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 77 guests