xBrowse y SetArray(aArray) (SOLUCIONADO)
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
xBrowse y SetArray(aArray) (SOLUCIONADO)
Amigos del Foro: Solicito un pequeño ejemplo, u orientación sobre el uso de xbrowse con arrays. (ya he visto los ejemplos en samples y aquí en el foro, pero no encuentro lo que deseo)
Antes que nada, esto lo tengo resuelto con TWinbrowse, pero quiero pasarlo a TxBrowse.
El caso es el siguiente: Tengo un dialogo con algunos gets y un xbrowse desde recursos. Al crear el brow le cargo un array vacío asi: aMiArray:={{"","",""}} (pueden ser mas columnas), y todo bien. (este array lo he declarado Static)
Más adelante, al actualizar cualquiera de los gets con un VALID activo una function llamada Actualizar(oBrw)
Dentro de esta funcion recargo el array con : (con la misma estructura, solo cambio datos)
aMiArray:={}
aMiArray:={{"nvo dato","otro","otro"}}
oBrw:SetArray(aMiArray)
oBrw:Refresh()
El oBrow recarga bien el array en cuanto a los datos, pero pierde los titulos de las columnas, los footers definidos y la presentacion de los valores numéricos. (pierde los pictures "9,999,999,999.99")
Mi pregunta es: ¿Como hacer para que al refrescar el browse no se pierdan los headers, footers y los pictures?
Nota: Al refrescar el Browse, los headers aparecen asi: oCol-1,oCol-2, etc,etc. y los footers en blanco.
Agradezco de antemano cualquier ayuda al respecto.
Saludos
Antes que nada, esto lo tengo resuelto con TWinbrowse, pero quiero pasarlo a TxBrowse.
El caso es el siguiente: Tengo un dialogo con algunos gets y un xbrowse desde recursos. Al crear el brow le cargo un array vacío asi: aMiArray:={{"","",""}} (pueden ser mas columnas), y todo bien. (este array lo he declarado Static)
Más adelante, al actualizar cualquiera de los gets con un VALID activo una function llamada Actualizar(oBrw)
Dentro de esta funcion recargo el array con : (con la misma estructura, solo cambio datos)
aMiArray:={}
aMiArray:={{"nvo dato","otro","otro"}}
oBrw:SetArray(aMiArray)
oBrw:Refresh()
El oBrow recarga bien el array en cuanto a los datos, pero pierde los titulos de las columnas, los footers definidos y la presentacion de los valores numéricos. (pierde los pictures "9,999,999,999.99")
Mi pregunta es: ¿Como hacer para que al refrescar el browse no se pierdan los headers, footers y los pictures?
Nota: Al refrescar el Browse, los headers aparecen asi: oCol-1,oCol-2, etc,etc. y los footers en blanco.
Agradezco de antemano cualquier ayuda al respecto.
Saludos
Last edited by FranciscoA on Sat Sep 26, 2009 3:28 am, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- pablovidal
- Posts: 401
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: xBrowse y SetArray(aArray)
Code: Select all | Expand
aMiArray:={}
aMiArray:={{"nvo dato","otro","otro"}}
//oBrw:SetArray(aMiArray)
oBrw:aArrayData := aMiArray // <- Asi es
oBrw:Refresh()
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: xBrowse y SetArray(aArray)
Pablo, Gracias por contestar. Agradezco tu interés.
Es correcto como tú indicas. Ya lo había probado así, pero sólo me presenta un registro del array. Mejor dicho, el Browse muestra tantos registros como contiene el array, pero todos con los mismos datos del primer registro.
Como dije anteriormente, si lo hago así: oBrw:SetArray(MiArray), muestra bien todos los datos, pero perdiendo los headers,footers y pictures.
¿Qué me dices tú?, o alguien más en el foro.
Gracias nuevamente.
Es correcto como tú indicas. Ya lo había probado así, pero sólo me presenta un registro del array. Mejor dicho, el Browse muestra tantos registros como contiene el array, pero todos con los mismos datos del primer registro.
Como dije anteriormente, si lo hago así: oBrw:SetArray(MiArray), muestra bien todos los datos, pero perdiendo los headers,footers y pictures.
¿Qué me dices tú?, o alguien más en el foro.
Gracias nuevamente.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: xBrowse y SetArray(aArray)
Aqui dejo un ejemplo funcional de lo que estoy haciendo. Agradeceré cualquier ayuda.
Saludos.
Saludos.
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
static nTotalItems:=0
Static aMiArray := { {"", "" } }
//--------------------------------------------------------------------------------------------------------------------//
Function Main()
local oBrw,oGet1,oGet2
local nItem:=1
local n:=0,oCol
Local oDlg, nConsec:=0,dFecIni:=Date()
SET DATE BRITISH
SET CENTURY ON
SET CONFIRM ON
SET EPOCH TO 1990
SET RESOURCES TO "Financ.dll"
dFecIni := Date()
DEFINE DIALOG oDlg RESOURCE "INTERES"
REDEFINE GET oGet1 VAR nConsec ID 101 OF oDlg ;
UPDATE ;
PICTURE "9999" ;
VALID ( if(!empty(nConsec), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet1:bGotFocus := {||oGet1:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet1:bLostFocus := {||oGet1:SetColor( CLR_BLACK, CLR_WHITE ) }
REDEFINE GET oGet2 VAR dFecIni ID 102 OF oDlg ;
UPDATE ;
VALID ( if(!empty(dFecIni), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet2:bGotFocus := {||oGet2:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet2:bLostFocus := {||oGet2:SetColor( CLR_BLACK, CLR_WHITE ) }
//Para mostrar separadores de miles en TxBrowse
xbrNumFormat( "A", .t. ) // "E" for European, "A" for American and others
// .t. for showing thousand separators
oBrw := TXBrowse():New( oDlg )
//ESTILOS DE LINEAS
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
oBrw:nColDividerStyle := LINESTYLE_INSET
oBrw:nRowDividerStyle := LINESTYLE_INSET
oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
//HEADERS Y FOOTERS
oBrw:nHeaderHeight := 30 //Altura cabeceras de col
oBrw:lFooter := .t. //Que tendrá footer
oBrw:nFooterLines := 1 //Lineas del footer
oBrw:nFooterHeight := 30 //Altura del Footer
oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
//COLORES (texto y fondo del texto)
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
oBrw:bClrFooter := oBrw:bClrHeader
oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
oBrw:nRowHeight := 20 //altura entre lineas
oBrw:lFastEdit := .f. //.t.= edicion rapida, salta a sig col
//COLUMNAS DEL BROWSE
oCol = oBrw:AddCol()
oCol:bStrData = { || Transform(aMiArray[1][1],"9999") }
oCol:nDataStrAlign := 1
oCol:cHeader = "Consec"
oCol:bFooter = {|| TRANSFORM(nTotalItems,"999999") }
oCol:nFootStrAlign := 1
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][2] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Fecha"
oBrw:CreateFromResource(181)
oBrw:SetArray(aMiArray)
ACTIVATE DIALOG oDlg CENTERED
SET RESOURCES TO
Return Nil
//--------------------------------------------------------------------------------------------------------------------//
Static Function Actualice(oBrw, nConsec, dFecIni )
Local dFecha := dFecIni, xVeces:=nConsec
aMiArray := {}
If empty(nConsec) .OR. empty(dFecha)
Return NIL
EndIf
While xVeces <= ( 10 )
AAdd( aMiArray, { xVeces++, DtoC( dFecha ) } )
dFecha += 10
EndDo
nTotalItems := xVeces
//oBrw:aArrayData:=aMiArray //este presenta todos los registros con el valor del primero
oBrw:SetArray(aMiArray) //presenta bien los registros, pero sin headers,footers,pictures
oBrw:Refresh()
Return NIL
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse y SetArray(aArray)
Francisco...
Falta el recurso para construir el ejemplo...
Pero prueba agreando esto a cada definicion de columna
oCol:nArrayCol := 1
oCol:nArrayCol := 2
y haces como te lo indica pablo
Falta el recurso para construir el ejemplo...
Pero prueba agreando esto a cada definicion de columna
oCol:nArrayCol := 1
oCol:nArrayCol := 2
y haces como te lo indica pablo
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse y SetArray(aArray)
Francisco...
Este es un ejemplo
Este es un ejemplo
Code: Select all | Expand
#include "FiveWin.ch"
#include "xbrowse.ch"
function Main()
local oWnd
local oWndDlg,;
oBrw,;
oCol
local aArray := { }
define dialog oWndDlg title "Test Blank Array on Dialog" size 500,500 pixel
oBrw := TXBrowse():New( oWndDlg )
oBrw:SetArray( aArray )
oCol:= oBrw:addcol()
oCol:cHeader := "Num1"
oCol:nWidth := 40
oCol:nArrayCol := 1 // it is necesary
oCol:= oBrw:addcol()
oCol:cHeader := "Date"
oCol:nWidth := 80
oCol:nArrayCol := 2 // it is necesary
oCol:= oBrw:addcol()
oCol:cHeader := "Time"
oCol:nWidth := 80
oCol:nArrayCol := 3 // it is necesary
oCol:= oBrw:addcol()
oCol:cHeader := "Extra"
oCol:nWidth := 80
oCol:nArrayCol := 4 // it is necesary
oBrw:lFastEdit := .t.
oBrw:lAutoAppend := .t.
if oBrw:lAutoAppend .and. oBrw:lFastEdit
oBrw:bPastEof := { || Actualice( oBrw, oBrw ), oBrw:GoBottom(), oBrw:Refresh() }
endif
oBrw:CreateFromCode()
oWndDlg:oClient := oBrw
activate dialog oWndDlg on init( BtnBar( oWndDlg, oBrw ), oWndDlg:Resize() )
return nil
function BtnBar( oParent, oBrw )
local oBar
DEFINE buttonbar oBar of oParent size 80,32 2007
define button of oBar prompt "Append" action Actualice(oBrw, 1, date() )
define button of oBar prompt "Delete" action DeleteRow( oBrw )
define button of oBar prompt "Quit" action ( oParent:end() )
return nil
Function Actualice(oBrw, nConsec, dFecIni )
Local dFecha := dFecIni, xVeces:=nConsec
aMiArray := {}
If empty(nConsec) .OR. empty(dFecha)
Return NIL
EndIf
While xVeces <= ( 10 )
AAdd( aMiArray, { xVeces++, DtoC( dFecha ), time(), time() + " " + DtoC( date() ) } )
dFecha += 10
EndDo
nTotalItems := xVeces
oBrw:aArrayData:=aMiArray //este presenta todos los registros con el valor del primero
// oBrw:SetArray(aMiArray) //presenta bien los registros, pero sin headers,footers,pictures
oBrw:Refresh()
Return NIL
static function DeleteRow( oBrw )
if !empty( oBrw:aArrayData )
ADel( oBrw:aArrayData, oBrw:nArrayAt )
ASize( oBrw:aArrayData, Len( oBrw:aArrayData ) - 1 )
oBrw:Refresh()
oBrw:SetFocus()
endif
return nil
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: xBrowse y SetArray(aArray)
Daniel, muchas gracias por contestar. Aquí está el recurso (.rc)
Hice los ajustes que indicas en el primer post y sigue lo mismo. Tu ejemplo me ha dado otras ideas, y por supuesto me es útil. Continúo luchando con lo que quiero hacer. Gracias, nuevamente.
Saludos.
pd: A mi ejemplo hay que quitarle las lineas referentes a: SET RESOURCES TO...
// RESOURCE SCRIPT generated by "Pelles C for Windows, version 6.00".
LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US
INTERES DIALOG FIXED IMPURE 0, -29, 476, 227
STYLE WS_POPUP|DS_MODALFRAME|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Prueba de TxBrowse"
FONT 8, "MS Sans Serif"
{
CONTROL "", 101, "Edit", ES_RIGHT|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 120, 6, 80, 12
CONTROL "", 102, "Edit", ES_RIGHT|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 120, 22, 52, 12
CONTROL "", 181, "ListBox", LBS_SORT|LBS_NOTIFY|LBS_MULTICOLUMN|WS_HSCROLL|WS_VSCROLL|WS_BORDER|WS_TABSTOP, 2, 40, 472, 174
CONTROL "Consecutivo", 4003, "Static", SS_RIGHT|WS_GROUP, 6, 8, 112, 8
CONTROL "Fecha", 4004, "Static", SS_RIGHT|WS_GROUP, 6, 24, 110, 8
}
Hice los ajustes que indicas en el primer post y sigue lo mismo. Tu ejemplo me ha dado otras ideas, y por supuesto me es útil. Continúo luchando con lo que quiero hacer. Gracias, nuevamente.
Saludos.
pd: A mi ejemplo hay que quitarle las lineas referentes a: SET RESOURCES TO...
// RESOURCE SCRIPT generated by "Pelles C for Windows, version 6.00".
LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US
INTERES DIALOG FIXED IMPURE 0, -29, 476, 227
STYLE WS_POPUP|DS_MODALFRAME|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Prueba de TxBrowse"
FONT 8, "MS Sans Serif"
{
CONTROL "", 101, "Edit", ES_RIGHT|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 120, 6, 80, 12
CONTROL "", 102, "Edit", ES_RIGHT|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 120, 22, 52, 12
CONTROL "", 181, "ListBox", LBS_SORT|LBS_NOTIFY|LBS_MULTICOLUMN|WS_HSCROLL|WS_VSCROLL|WS_BORDER|WS_TABSTOP, 2, 40, 472, 174
CONTROL "Consecutivo", 4003, "Static", SS_RIGHT|WS_GROUP, 6, 8, 112, 8
CONTROL "Fecha", 4004, "Static", SS_RIGHT|WS_GROUP, 6, 24, 110, 8
}
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse y SetArray(aArray)
Francisco
El ejemplo que he publicado funciona perfectamente... voy a subir un ejecutable
El ejemplo que he publicado funciona perfectamente... voy a subir un ejecutable
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse y SetArray(aArray)
Francisco...
aqui dejo el ejecutable como he prometido
http://www.sitasoft.com/fivewin/test/xbrarra2.rar
aqui dejo el ejecutable como he prometido
http://www.sitasoft.com/fivewin/test/xbrarra2.rar
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: xBrowse y SetArray(aArray)
Daniel, efectivamente tu ejecutable funciona bien.
El ejemplo compila y ejecuta sin ningún problema, pero al "clickear" en el boton append o delete no hace nada.
Estoy pensando que es cuestión de versión de FWH (uso 901)
Muchísimas gracias.
El ejemplo compila y ejecuta sin ningún problema, pero al "clickear" en el boton append o delete no hace nada.
Estoy pensando que es cuestión de versión de FWH (uso 901)
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
Muchísimas gracias.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: xBrowse y SetArray(aArray) (SOLUCIONADO)
Hola Daniel.
Comprobado, es cuestión de versión. He leído varios post en los cuales se describe este inconveniente.
Sin embargo, he logrado solucionarlo de la manera siguiente. Dejo el ejemplo por si alguien tiene el mismo problema que yo.
Decidí no tocar la Classe TxBrowse. El recurso está posteado un poco más arriba.
#include "FiveWin.ch"
#include "xBrowse.ch"
static aTitCols:={}
static aFootCols:={}
static aWidthCols:={}
static aPictCols:={}
static nValores:=0
//--------------------------------------------------------------------------------------------------------------------//
Function Main()
local oBrw,oGet1,oGet2
local n:=0,oCol
Local oDlg, nConsec:=0,dFecIni:=Date()
local aMiArray:={{"","","",""}}
SET DATE BRITISH
SET CENTURY ON
SET CONFIRM ON
SET EPOCH TO 1990
dFecIni := Date()
DEFINE DIALOG oDlg RESOURCE "INTERES" TITLE "PRUEBA DE TXBROWSE CON ARRAY"
REDEFINE GET oGet1 VAR nConsec ID 101 OF oDlg ;
UPDATE ;
PICTURE "9999" ;
VALID ( if(!empty(nConsec), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet1:bGotFocus := {||oGet1:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet1:bLostFocus := {||oGet1:SetColor( CLR_BLACK, CLR_WHITE ) }
REDEFINE GET oGet2 VAR dFecIni ID 102 OF oDlg ;
UPDATE ;
VALID ( if(!empty(dFecIni), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet2:bGotFocus := {||oGet2:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet2:bLostFocus := {||oGet2:SetColor( CLR_BLACK, CLR_WHITE ) }
oBrw := TXBrowse():New( oDlg )
//ESTILOS DE LINEAS
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
oBrw:nColDividerStyle := LINESTYLE_INSET
oBrw:nRowDividerStyle := LINESTYLE_INSET
oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
//HEADERS Y FOOTERS
oBrw:nHeaderHeight := 30 //Altura cabeceras de col
oBrw:lFooter := .t. //Que tendrá footer
oBrw:nFooterLines := 1 //Lineas del footer
oBrw:nFooterHeight := 30 //Altura del Footer
oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
//COLORES (texto y fondo del texto)
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
oBrw:bClrFooter := oBrw:bClrHeader
oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
oBrw:nRowHeight := 20 //altura entre lineas
//COLUMNAS DEL BROWSE
oCol = oBrw:AddCol()
oCol:bStrData = { || Transform(aMiArray[1][1],"9999") }
oCol:nDataStrAlign := 1
oCol:cHeader = "Consec"
oCol:bFooter = {|| "Hola" }
oCol:nFootStrAlign := 1
oCol:nWidth = 44
oCol:cEditPicture := NumPict( 4, 0, .F., .f. )
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][2] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Fecha"
oCol:bFooter = {|| "Hola" }
oCol:nWidth = 88
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][3] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Hora"
oCol:nWidth = 88
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][4] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Valores"
oCol:bFooter = {|| TRANSFORM(nValores,"9,999,999,999.99") }
oCol:nWidth = 100
oCol:cEditPicture := NumPict( 14, 2, .F., .t. )
For n:=1 to len(oBrw:aCols)
aadd(aTitCols,oBrw:aCols[n]:cHeader)
aadd(aFootCols,oBrw:aCols[n]:bFooter)
aadd(aWidthCols,oBrw:aCols[n]:nWidth)
aadd(aPictCols,oBrw:aCols[n]:cEditPicture)
Next
oBrw:CreateFromResource(181)
oBrw:SetArray(aMiArray)
ACTIVATE DIALOG oDlg CENTERED
Return Nil
//--------------------------------------------------------------------------------------------------------------------//
Static Function Actualice(oBrw, nConsec, dFecIni )
Local dFecha := dFecIni, xVeces:=1, nValor:=1000
local aMiArray := {}
If empty(nConsec) .OR. empty(dFecha)
Return NIL
EndIf
nValores:=0
While xVeces <= nConsec
AAdd( aMiArray, { xVeces++, DtoC( dFecha ), time(), nValor } )
dFecha += 10
nValores+=nValor
nValor ++
EndDo
oBrw:SetArray(aMiArray)
AEval( oBrw:aCols, {|oCol| oCol:cHeader := aTitCols[oCol:nArrayCol] ,;
oCol:bFooter := aFootCols[oCol:nArrayCol] ,;
oCol:nWidth:= aWidthCols[oCol:nArrayCol] ,;
oCol:cEditPicture:= aPictCols[oCol:nArrayCol] } )
oBrw:Refresh()
Return NIL
Comprobado, es cuestión de versión. He leído varios post en los cuales se describe este inconveniente.
Sin embargo, he logrado solucionarlo de la manera siguiente. Dejo el ejemplo por si alguien tiene el mismo problema que yo.
Decidí no tocar la Classe TxBrowse. El recurso está posteado un poco más arriba.
#include "FiveWin.ch"
#include "xBrowse.ch"
static aTitCols:={}
static aFootCols:={}
static aWidthCols:={}
static aPictCols:={}
static nValores:=0
//--------------------------------------------------------------------------------------------------------------------//
Function Main()
local oBrw,oGet1,oGet2
local n:=0,oCol
Local oDlg, nConsec:=0,dFecIni:=Date()
local aMiArray:={{"","","",""}}
SET DATE BRITISH
SET CENTURY ON
SET CONFIRM ON
SET EPOCH TO 1990
dFecIni := Date()
DEFINE DIALOG oDlg RESOURCE "INTERES" TITLE "PRUEBA DE TXBROWSE CON ARRAY"
REDEFINE GET oGet1 VAR nConsec ID 101 OF oDlg ;
UPDATE ;
PICTURE "9999" ;
VALID ( if(!empty(nConsec), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet1:bGotFocus := {||oGet1:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet1:bLostFocus := {||oGet1:SetColor( CLR_BLACK, CLR_WHITE ) }
REDEFINE GET oGet2 VAR dFecIni ID 102 OF oDlg ;
UPDATE ;
VALID ( if(!empty(dFecIni), (Actualice(oBrw, nConsec, dFecIni ), .T.),(MsgStop("Debe ingresar un valor.","Alto"),.f.) ) )
oGet2:bGotFocus := {||oGet2:SetColor( CLR_WHITE, CLR_BLUE ) }
oGet2:bLostFocus := {||oGet2:SetColor( CLR_BLACK, CLR_WHITE ) }
oBrw := TXBrowse():New( oDlg )
//ESTILOS DE LINEAS
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
oBrw:nColDividerStyle := LINESTYLE_INSET
oBrw:nRowDividerStyle := LINESTYLE_INSET
oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
//HEADERS Y FOOTERS
oBrw:nHeaderHeight := 30 //Altura cabeceras de col
oBrw:lFooter := .t. //Que tendrá footer
oBrw:nFooterLines := 1 //Lineas del footer
oBrw:nFooterHeight := 30 //Altura del Footer
oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
//COLORES (texto y fondo del texto)
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
oBrw:bClrFooter := oBrw:bClrHeader
oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
oBrw:nRowHeight := 20 //altura entre lineas
//COLUMNAS DEL BROWSE
oCol = oBrw:AddCol()
oCol:bStrData = { || Transform(aMiArray[1][1],"9999") }
oCol:nDataStrAlign := 1
oCol:cHeader = "Consec"
oCol:bFooter = {|| "Hola" }
oCol:nFootStrAlign := 1
oCol:nWidth = 44
oCol:cEditPicture := NumPict( 4, 0, .F., .f. )
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][2] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Fecha"
oCol:bFooter = {|| "Hola" }
oCol:nWidth = 88
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][3] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Hora"
oCol:nWidth = 88
oCol = oBrw:AddCol()
oCol:bStrData = { || aMiArray[1][4] }
oCol:nDataStrAlign := 1
oCol:cHeader = "Valores"
oCol:bFooter = {|| TRANSFORM(nValores,"9,999,999,999.99") }
oCol:nWidth = 100
oCol:cEditPicture := NumPict( 14, 2, .F., .t. )
For n:=1 to len(oBrw:aCols)
aadd(aTitCols,oBrw:aCols[n]:cHeader)
aadd(aFootCols,oBrw:aCols[n]:bFooter)
aadd(aWidthCols,oBrw:aCols[n]:nWidth)
aadd(aPictCols,oBrw:aCols[n]:cEditPicture)
Next
oBrw:CreateFromResource(181)
oBrw:SetArray(aMiArray)
ACTIVATE DIALOG oDlg CENTERED
Return Nil
//--------------------------------------------------------------------------------------------------------------------//
Static Function Actualice(oBrw, nConsec, dFecIni )
Local dFecha := dFecIni, xVeces:=1, nValor:=1000
local aMiArray := {}
If empty(nConsec) .OR. empty(dFecha)
Return NIL
EndIf
nValores:=0
While xVeces <= nConsec
AAdd( aMiArray, { xVeces++, DtoC( dFecha ), time(), nValor } )
dFecha += 10
nValores+=nValor
nValor ++
EndDo
oBrw:SetArray(aMiArray)
AEval( oBrw:aCols, {|oCol| oCol:cHeader := aTitCols[oCol:nArrayCol] ,;
oCol:bFooter := aFootCols[oCol:nArrayCol] ,;
oCol:nWidth:= aWidthCols[oCol:nArrayCol] ,;
oCol:cEditPicture:= aPictCols[oCol:nArrayCol] } )
oBrw:Refresh()
Return NIL
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- Patricio Avalos Aguirre
- Posts: 1060
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Re: xBrowse y SetArray(aArray) (SOLUCIONADO)
Estimados
El ejemplo que propone Daniel sale una columna fantasma "Col1", a mi una columna "A"
como se soluciona esto?
El ejemplo que propone Daniel sale una columna fantasma "Col1", a mi una columna "A"
como se soluciona esto?
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
-
- Posts: 323
- Joined: Wed May 16, 2007 9:40 pm
- Location: Region de Ñuble, Chile
Re: xBrowse y SetArray(aArray) (SOLUCIONADO)
una consulta, como puedo sumar una columna del xbrowse en el footer
Fivewin-Xharbour 24.09, Iquique, Chile