Refrescar XBrowse con Array diferente
Posted: Sat Jul 20, 2013 4:59 am
Amigos del Foro.
Estoy tratando de refrescar un mismo Xbrowse, desde arrays diferentes. No lo he podido lograr en 2 dias.
Podría decirme alguien que hago mal en este codigo? Si alguno lo ha hecho, puede suministrarme un ejemplo?
El error se presenta cuando alguno de los arrays posteriores al primero tiene longitud menor, y si es mayor solo presenta columnas segun longitud del primer array cargado.
Error description: Error BASE/1132 Bound error: array access
Args:
[ 1] = A { ... }
[ 2] = N 3
Stack Calls
===========
Called from: D:\FERR_P~1\wfic32.prg => (b)FAPSOFTSCAN( 1834 )
Gracias de antemano.
Saludos.
upps!!, por longitud diferente me refiero a cantidad de columnas diferentes, sorry.
Estoy tratando de refrescar un mismo Xbrowse, desde arrays diferentes. No lo he podido lograr en 2 dias.
Podría decirme alguien que hago mal en este codigo? Si alguno lo ha hecho, puede suministrarme un ejemplo?
El error se presenta cuando alguno de los arrays posteriores al primero tiene longitud menor, y si es mayor solo presenta columnas segun longitud del primer array cargado.
Error description: Error BASE/1132 Bound error: array access
Args:
[ 1] = A { ... }
[ 2] = N 3
Stack Calls
===========
Called from: D:\FERR_P~1\wfic32.prg => (b)FAPSOFTSCAN( 1834 )
- Code: Select all Expand view
- #include "FiveWin.ch"
#INCLUDE "XBROWSE.CH"
#INCLUDE "INKEY.CH"
//----------------------//
Function Main()
local oDlg, oBrw, oCbx, n
local nWidthRes := GetSysMetrics(SM_CXSCREEN)
local nHeightRes := GetSysMetrics(SM_CYSCREEN)
local aInfo:={}, aTitCols:={}, aWMIscan, bMonitoring
local cVar
local aOptions := {" Program Group ",;
" Computer Systen ",;
" Win32 Share ",;
" Win32 Service " }
aWMIscan:=FapMonitoring(1)
aInfo:=aWMIscan[1] ; aTitCols:=aWMIscan[2]
DEFINE DIALOG oDlg FROM 1,2 to 15,80 TITLE "FapSoftScan" TRANSPARENT
cVar := aOptions[1]
@2,1 COMBOBOX oCBx VAR cVar OF oDlg ;
ITEMS aOptions ;
SIZE 160,12 ;
ON CHANGE ( aWMIscan:=FapMonitoring(oCBx:nAt()) ,;
aInfo:=aWMIscan[1], aTitCols:=aWMIscan[2],;
oBrw:SetArray(aInfo),;
AEval( oBrw:aCols, { |o,n| o:cHeader := aTitCols[n],; //aqui se da el error
o:nHeadStrAlign := AL_CENTER ,;
o:nWidth := 170 } ) ,;
oBrw:Refresh(), oBrw:SetFocus() )
@3,1 XBROWSE oBrw OF oDlg ;
ARRAY {} CELL LINES FOOTERS AUTOSORT
oBrw:CreateFromCode()
oBrw:SetArray(aInfo)
AEval( oBrw:aCols, { |o,n| o:cHeader := aTitCols[n],;
o:nHeadStrAlign := AL_CENTER ,;
o:nWidth := 170 } )
ACTIVATE DIALOG oDlg ;
ON INIT ( oDlg:SetSize(nWidthRes-10,nHeightRes-50) ,;
oDlg:Move(1,2) ,;
oBrw:nHeight:=oDlg:nHeight-163, oBrw:nWidth:=oDlg:nWidth-40, oBrw:nTop:=oDlg:nTop+160 )
Return nil
//-------------------------------------------------------------
Function FapMonitoring(nOption)
local aInfo:={}, aTitCols
if nOption == 1
aInfo:={{"Info1","Info2","Info3"},{"Info1","Info2","Info3"}}
aTitCols:={"Col1","Col2","Col3"}
elseif nOption == 2
aInfo:={{"Info1","Info2"}}
aTitCols:={"Col1","Col2"}
elseif nOption == 3
aInfo:={{"Info1","Info2","Info3","Info4"},{"Info1","Info2","Info3","Info4"},{"Info1","Info2","Info3","Info4"},{"Info1","Info2","Info3","Info4"}}
aTitCols:={"Col1","Col2","Col3","Col4"}
elseif nOption == 4
aInfo:={{"Info1","Info2","Info3"},{"Info1","Info2","Info3"}}
aTitCols:={"Col1","Col2","Col3"}
endif
RETURN {aInfo,aTitCols}
Gracias de antemano.
Saludos.
upps!!, por longitud diferente me refiero a cantidad de columnas diferentes, sorry.