Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Crear listbox Array en tiempo de ejecucion listbox o xbrowse

Postby lubin » Thu Jul 14, 2016 6:07 pm

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  Expand view


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 los campos 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
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

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

Postby FranciscoA » Thu Jul 14, 2016 7:56 pm

Intentalo asi:
Code: Select all  Expand view
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.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

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

Postby lubin » Fri Jul 15, 2016 4:37 am

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
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

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

Postby FranciscoA » Fri Jul 15, 2016 5:33 pm

Lubin, prueba esta codigo ejemplo (funcional)

Code: Select all  Expand view
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.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

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

Postby lubin » Sat Jul 23, 2016 8:06 pm

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
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 38 guests