Que estoy haciendo mal?
Posted: Sun Jun 14, 2009 8:06 am
Hola gente, estoy queriendo mostrar en un xbrowse una grilla de checkboxs... en realidad ya lo he hecho de esta forma...
Ahora, todo este codigo anda bien, pero la segunda vez.. o sea.. cuando arranca el xbrowse esta vacio, luego aprieto una tecla y me tiene que armar la grilla, esto es asi porque de antemano yo no se cuantas columnas y filas va a tener.
En este ejemplo, al momento de armarla por primera vez da error, pero si se aprieta otra vez la tecla, arma toda la grilla bien... alquien sabe que estoy haciendo mal? El error es porque el elemento 2 de la grilla no existe a pesar de que antes hice un SetArray con 4 columnas de elementos.. Bueno, si peden compilar ese codigo veran de manera muy simple lo que quiero decir.. Gracias por su apoyo de siempre.-.
Code: Select all
#include "FiveWin.ch"
#include "xbrowse.ch"
function Main()
local oDlg, oBrw
DEFINE DIALOG oDlg SIZE 300, 200
@ 0, 0 XBROWSE oBrw OF oDlg
oBrw:CreateFromCode()
oBrw:bKeyDown = { || CrearColumna(oBrw) }
ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize() )
return nil
//---------------------------------------------------------------------------------//
Function crearcolumna(obrw)
Local oCol,I,nI
LOCAL aListas:={{"Plato 1",.T.,.T.,.T.},{"Plato 2",.F.,.T.,.F.}}
LOCAL aCargos:={"Platos","Caliente","Frio","Templado"
FOR I = 1 TO LEN(aListas[1])
oCol:=obrw:addCol()
NEXT
oBrw:SetArray(aListas)
oBrw:aCols[1]:cHeader:= "Platos"
oBrw:aCols[1]:nWidth:=100
FOR nI = 2 TO LEN(aCargos)
oBrw:aCols[nI]:cHeader:=aCargos[nI]
oBrw:aCols[nI]:nWidth:=50
oBrw:aCols[nI]:SetCheck( { "Checkon", "Checkoff" },{ |o,v|oBrw:aArrayData[oBrw:nRowSel,oBrw:nAt]:=v} )
NEXT
obrw:refresh()
return .t.
En este ejemplo, al momento de armarla por primera vez da error, pero si se aprieta otra vez la tecla, arma toda la grilla bien... alquien sabe que estoy haciendo mal? El error es porque el elemento 2 de la grilla no existe a pesar de que antes hice un SetArray con 4 columnas de elementos.. Bueno, si peden compilar ese codigo veran de manera muy simple lo que quiero decir.. Gracias por su apoyo de siempre.-.