Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post Reply
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post by lubin »

Buen dia con todos

Es posible crear un listbox de un array que es una matriz que se arma en tiempo de ejecucion ?

Yo estoy haciendo esto pero no me resulta, o como podria hacerlo usando el Xbrowse, creo q es mejor alternativa por que luego quiero modiciar una de las celdas?? .

Code: Select all


FUNCTION mibrow()
********************** EJEMPLO CREA LA MATRIZ POR VIZUALIZAR
local Matriz_SINO:={}
local i :=0 
LOCal j:=0 

* esto es una matriz FICTICIA , EN ESTE CASO DE 6 FILAS Y 5 COLUMNAS, ESTOS VALORES PUEDEN CAMBIAR  
FOR I = 1 TO 6
  AADD(Matriz_SINO,{"S","N","S","S","N"})
NEXT 

 VERMATRIZ(Matriz_SINO)   && LLAMO A LA FUNCION PARA VER LA MATRIZ CON UN BROWSE

return .t.  

FUNCTION VerMatriz(Matriz_SINO)
******************************
* Funcion de Mantenimiento de Vector Matriz 
************************************************
LOCAL oDlg, oBrw

local i :=0 

local V_Header:={}   && Vector de titulos 
local V_ColSize:={}  && Vector de tamaños de Columnas 
local nColumnas:= 0
local B_Line:={}

nColumnas:=LEN(Matriz_SINO[1])

*Creamos encabezados y anchos de columnas del browse
for i = 1 to  nColumnas
  AADD(V_Header ,str(i,3,0))
  AADD(V_ColSize,20)
next i  

*Creamos la macro para armar el codeblock para _ Arrays a visalizar
* y formar  este modelo.. {|| Mat[oBrw:nAt, 1] ,Mat[oBrw:nAt, 2], Mat[oBrw:nAt, 3], ....Mat[oBrw:nAt, nColumnas]  }  
B_Line:=""
for i = 1 to nColumnas                                                
  B_Line=B_Line + "Matriz_SINO[oBrw:nAt]["+alltrim(str(i,10,0))+"]"+if(i=45,"",",") 
next i 
B_Line=  "{ || {"+B_Line+"} }"  && Se Arma el codeblock macro final 


   DEFINE DIALOG oDlg FROM 2, 2 TO 30,150 TITLE "Matriz de Si o NO "
   @ 0, 0 SAY "Matriz "  OF oDlg
   @ 1, 2 LISTBOX oBrw FIELDS ""  HEADERS "" OF oDlg   
      oBrw:aHeaders       := V_Header    && Cargo los titulos
      oBrw:aColSizes    := V_ColSize   && Cargo los anchos de culumna (Size)
      oBrw:nAt       = 1
      // bLine is a codeblock that returns an array
      // if you need a 'traditional column based browse' have a look at TcBrowse

      oBrw:bLine     := &B_Line  &&  asigno la macro { || B_Line }       AQUI FALLA !!!!  NO EXISTE VARIABLE:  Matriz_SINO 

      oBrw:bGoTop    = { || oBrw:nAt := 1 }
      oBrw:bGoBottom = { || oBrw:nAt := Eval( oBrw:bLogicLen ) }
      oBrw:bSkip     = { | nWant, nOld | nOld := oBrw:nAt, oBrw:nAt += nWant,;
                           oBrw:nAt := Max( 1, Min( oBrw:nAt, Eval( oBrw:bLogicLen ) ) ),;
                           oBrw:nAt - nOld }
      oBrw:bLogicLen = { || Len( Matriz_SINO ) }
      oBrw:cAlias    = "Array"                // Just put something

   @ 09, 04 BUTTON "&Editar" OF oDlg ACTION msginfo("estoy en la linea " + str(oBrw:nAt,10,0),"oki ")  
   @ 09, 20 BUTTON "&Salir"  OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
 RETURN nil


 
Muchas gracias

Lubin
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post by FranciscoA »

Intentalo asi:

Code: Select all

FUNCTION mibrow()
********************** EJEMPLO CREA LA MATRIZ POR VIZUALIZAR
local Matriz_SINO:={}
local i :=0 
LOCal j:=0 

* esto es una matriz FICTICIA , EN ESTE CASO DE 6 FILAS Y 5 COLUMNAS, ESTOS VALORES PUEDEN CAMBIAR  
FOR I = 1 TO 6
  AADD(Matriz_SINO,{"S","N","S","S","N"})
NEXT 

 XBROWSE(Matriz_SINO,"ANALIZANDO Matriz")

return .t.

 
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post by lubin »

Francisco

No me fucnciona en la complilacion, creo que podria ser por tener un fivewin antiguo , pero adiconal a eso , mi deseo es no solo mostrarlo si no poder editar sus celdas
con otros valores,

No hay forma de manejarlo con lineas de programacion, ??

Gracias por tu tiempo en la respuestas
Lubin
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post by FranciscoA »

Lubin, prueba esta codigo ejemplo (funcional)

Code: Select all

FUNCTION mibrow()
********************** EJEMPLO CREA LA MATRIZ POR VIZUALIZAR
local Matriz_SINO:={}
local i :=0 
LOCal j:=0 

* esto es una matriz FICTICIA , EN ESTE CASO DE 6 FILAS Y 5 COLUMNAS, ESTOS VALORES PUEDEN CAMBIAR  
FOR I = 1 TO 6
  AADD(Matriz_SINO,{"S","N","S","S","N"})
NEXT 

 VERMATRIZ(Matriz_SINO)   && LLAMO A LA FUNCION PARA VER LA MATRIZ CON UN BROWSE

return .t.  

FUNCTION VerMatriz(Matriz_SINO)
******************************
* Funcion de Mantenimiento de Vector Matriz 
************************************************
LOCAL oDlg, oBrw

local i :=0 

local V_Header:={}   && Vector de titulos 
local V_ColSize:={}  && Vector de tamaños de Columnas 
local nColumnas:= 0
local B_Line:={}

nColumnas:=LEN(Matriz_SINO[1])

*Creamos encabezados y anchos de columnas del browse
for i = 1 to  nColumnas
  AADD(V_Header ,str(i,3,0))
  AADD(V_ColSize,20)
next i  


   DEFINE DIALOG oDlg FROM 2, 2 TO 400,600 TITLE "Matriz de Si o NO " PIXEL
   @ 0, 0 SAY "Matriz "  OF oDlg

   @ 1, 2 XBROWSE oBrw OF oDlg  SIZE 200,100 ;
          AUTOCOLS ;
          HEADERS V_Header ;
          SIZES  V_ColSize ;
          ARRAY Matriz_SINO ;
          FOOTERS LINES CELL

    WITH OBJECT oBrw:aCols[3]
         :nEditType := 1  //editable    2= No editable
         :cToolTip := "Hola Lubin, esta col es editable"
    END   

    oBrw:CreateFromCode()

    oBrw:bLDblClick := {|| MsgInfo("Tu function") }

    oBrw:bChange := {|| if(oBrw:nArrayAt = 3, MsgInfo("Hola, saludos desde la fila 3"),) }

   @ 09, 04 BUTTON "&Editar" OF oDlg ACTION msginfo("estoy en la linea " + str(oBrw:nArrayAt),"oki ")  
   @ 09, 20 BUTTON "&Salir"  OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
 RETURN nil
 
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Post by lubin »

Gracias Francisco por tu respuesta y disculpa la demora de mi comentario

Hice las prueba de tu inicacion y a mi no me funciona, creo que el problema soy Yo pues tengo un five win muy viejito "Fivewin-marzo 2008" :( y quiza la clase xbrowse no me reconoce ciertos comandos.
Estoy seguro que a ti es 100% operativo como dices, primero debo resolver el tema de la version me parece :oops:

Gracias
Lubin
Post Reply