Page 1 of 1
Copiar um browse
Posted: Fri Feb 08, 2008 1:50 pm
by Rossine
Olá,
Preciso criar um novo browse em uma dialog com as mesmas propriedades de um outro browse que está em outra dialog. Tem como fazer isto ?
Obrigado,
Rossine.
Re: Copiar um browse
Posted: Fri Feb 08, 2008 2:23 pm
by karinha
Rossine wrote:Olá,
Preciso criar um novo browse em uma dialog com as mesmas propriedades de um outro browse que está em outra dialog. Tem como fazer isto ?
Obrigado,
Rossine.
Hola Rossine,
Seja mais especifico:
Em @say... ou Editor de Recursos?
Se a Browse inicial esta no mesmo modulo, podes usar o comando oClone(). Para Clonar o o Objeto da Browse inicial para a Proxima Browse .
Tens a mesma LISTBOX em qualquer lugar.
Se entendi...
Posted: Fri Feb 08, 2008 4:42 pm
by Rossine
Olá João,
Veja o exemplo abaixo:
O interessante é que, quando você clica no botão "próximo", a segunda dialog é mostrada, o browse não aparece, mas o browse que é atualizado nas novas coordenadas, é o do 1º browse.
Mais alguma dica ?
Obrigado,
Rossine.
Posted: Fri Feb 08, 2008 4:45 pm
by Rossine
Desculpem, aqui está o código (hehe)
Code: Select all
#include "fivewin.ch"
#include "xbrowse.ch"
function MAIN
local oDlg, oBrw, aStruc := { { "teste", "teste", "teste", "teste" }, ;
{ "teste", "teste", "teste", "teste" }, ;
{ "teste", "teste", "teste", "teste" }, ;
{ "teste", "teste", "teste", "teste" }, ;
{ "teste", "teste", "teste", "teste" } }
define dialog oDlg from 0, 0 to 300, 310 pixel
oBrw := TXBrowse():New( oDlg )
oBrw:SetArray( aStruc)
oBrw:nTop := 10
oBrw:nLeft := 10
oBrw:nRight := 150
oBrw:nBottom := 100
oBrw:aCols[1]:cHeader := Padr("NAME", 15)
oBrw:aCols[2]:cHeader := "TYPE"
oBrw:aCols[2]:nDataStrAlign := AL_CENTER
oBrw:aCols[2]:nHeadStrAlign := AL_CENTER
oBrw:aCols[3]:cHeader := "SIZE"
oBrw:aCols[3]:nDataStrAlign := AL_RIGHT
oBrw:aCols[3]:nHeadStrAlign := AL_RIGHT
oBrw:aCols[4]:cHeader := "LENGTH"
oBrw:aCols[4]:nDataStrAlign := AL_RIGHT
oBrw:aCols[4]:nHeadStrAlign := AL_RIGHT
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:lRecordSelector := .f.
oBrw:CreateFromCode()
oDlg:oClient := oBrw
@120, 60 button oBtn prompt "Proximo" of oDlg action DLG2( oBrw ) pixel
activate dialog oDlg on init oBrw:SetFocus() centered
RETURN NIL
static function DLG2( oBrw )
local oDlg1, oBrw1
define dialog oDlg1 from 200, 200 to 500, 510 pixel
oBrw1 := oClone( oBrw )
oBrw1:delcol(2)
oBrw1:nTop := 0
oBrw1:nLeft := 0
oBrw1:nRight := 10
oBrw1:nBottom := 50
oBrw1:oWnd := oDlg1
activate dialog oDlg1 on init oBrw1:SetFocus()
RETURN NIL
Abraços,
Rossine.
Posted: Fri Feb 08, 2008 5:26 pm
by RenOmaS
Acho que vc. tem que clonar en el on init del dialog
Code: Select all
define dialog oDlg1 from 200, 200 to 500, 510 pixel
oBrw1:CreateFromCode()
activate dialog oDlg1 on init InitBrowse( oBrw1, oBrw
...
Static Function InitBrowse( oBrw1, oBrw )
oBrw1 := oClone( oBrw )
oBrw1:delcol(2)
oBrw1:nTop := 0
oBrw1:nLeft := 0
oBrw1:nRight := 10
oBrw1:nBottom := 50
Return Nil
vc va a utilizar o mesmo alias no segundo browse?
salu2
Posted: Fri Feb 08, 2008 6:07 pm
by karinha
Code: Select all
#INCLUDE "FIVEWIN.CH"
#INCLUDE "XBROWSE.CH"
FUNCTION MAIN
LOCAL ODLG, OBRW, ASTRUC := { { "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" } }
DEFINE DIALOG ODLG FROM 0, 0 TO 300, 310 PIXEL
OBRW := TXBROWSE():NEW( ODLG )
OBRW:SETARRAY( ASTRUC)
OBRW:NTOP := 10
OBRW:NLEFT := 10
OBRW:NRIGHT := 150
OBRW:NBOTTOM := 100
OBRW:ACOLS[1]:CHEADER := PADR("NAME", 15)
OBRW:ACOLS[2]:CHEADER := "TYPE"
OBRW:ACOLS[2]:NDATASTRALIGN := AL_CENTER
OBRW:ACOLS[2]:NHEADSTRALIGN := AL_CENTER
OBRW:ACOLS[3]:CHEADER := "SIZE"
OBRW:ACOLS[3]:NDATASTRALIGN := AL_RIGHT
OBRW:ACOLS[3]:NHEADSTRALIGN := AL_RIGHT
OBRW:ACOLS[4]:CHEADER := "LENGTH"
OBRW:ACOLS[4]:NDATASTRALIGN := AL_RIGHT
OBRW:ACOLS[4]:NHEADSTRALIGN := AL_RIGHT
OBRW:NMARQUEESTYLE := MARQSTYLE_HIGHLCELL
OBRW:LRECORDSELECTOR := .F.
OBRW:CREATEFROMCODE()
ODLG:OCLIENT := OBRW
@120, 60 BUTTON OBTN PROMPT "PROXIMO" OF ODLG ;
ACTION DLG2( OBRW, ASTRUC, ODLG ) PIXEL
ACTIVATE DIALOG ODLG CENTERED ;
ON INIT OBRW:SETFOCUS()
RETURN NIL
STATIC FUNCTION DLG2( OBRW, ASTRUC, ODLG )
LOCAL ODLG1, OBRW1
DEFINE DIALOG ODLG1 FROM 200, 200 TO 500, 510 PIXEL
OBRW1 := OCLONE( OBRW, ASTRUC, ODLG )
OBRW1 := TXBROWSE():NEW( ODLG1 )
OBRW1:SETARRAY( ASTRUC )
OBRW1:NTOP := 10
OBRW1:NLEFT := 10
OBRW1:NRIGHT := 150
OBRW1:NBOTTOM := 100
OBRW1:ACOLS[1]:CHEADER := PADR("NAME", 15)
OBRW1:ACOLS[2]:CHEADER := "TYPE"
OBRW1:ACOLS[2]:NDATASTRALIGN := AL_CENTER
OBRW1:ACOLS[2]:NHEADSTRALIGN := AL_CENTER
OBRW1:ACOLS[3]:CHEADER := "SIZE"
OBRW1:ACOLS[3]:NDATASTRALIGN := AL_RIGHT
OBRW1:ACOLS[3]:NHEADSTRALIGN := AL_RIGHT
OBRW1:ACOLS[4]:CHEADER := "LENGTH"
OBRW1:ACOLS[4]:NDATASTRALIGN := AL_RIGHT
OBRW1:ACOLS[4]:NHEADSTRALIGN := AL_RIGHT
OBRW1:NMARQUEESTYLE := MARQSTYLE_HIGHLCELL
OBRW1:LRECORDSELECTOR := .F.
OBRW1:CREATEFROMCODE()
ODLG1:OCLIENT := OBRW1
/*
OBRW1:SETARRAY( ASTRUC )
OBRW1:DELCOL(2)
OBRW1:NTOP := 0
OBRW1:NLEFT := 0
OBRW1:NRIGHT := 10
OBRW1:NBOTTOM := 50
OBRW1:OWND := ODLG1
*/
ACTIVATE DIALOG ODLG1 ON INIT OBRW1:SETFOCUS()
RETURN NIL
Posted: Fri Feb 08, 2008 6:29 pm
by Rossine
Olá Renomas,
Acho que vc. tem que clonar en el on init del dialog
Code:
define dialog oDlg1 from 200, 200 to 500, 510 pixel
oBrw1:CreateFromCode()
activate dialog oDlg1 on init InitBrowse( oBrw1, oBrw
...
Static Function InitBrowse( oBrw1, oBrw )
oBrw1 := oClone( oBrw )
oBrw1:delcol(2)
oBrw1:nTop := 0
oBrw1:nLeft := 0
oBrw1:nRight := 10
oBrw1:nBottom := 50
Return Nil
Isto não funcionou.
vc va a utilizar o mesmo alias no segundo browse?
Sim.
Olá João,
Isto realmente funciona, mas vou ter que especificar propriedade por propriedade.
Code: Select all
#INCLUDE "FIVEWIN.CH"
#INCLUDE "XBROWSE.CH"
FUNCTION MAIN
LOCAL ODLG, OBRW, ASTRUC := { { "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" }, ;
{ "TESTE", "TESTE", "TESTE", "TESTE" } }
DEFINE DIALOG ODLG FROM 0, 0 TO 300, 310 PIXEL
OBRW := TXBROWSE():NEW( ODLG )
OBRW:SETARRAY( ASTRUC)
OBRW:NTOP := 10
OBRW:NLEFT := 10
OBRW:NRIGHT := 150
OBRW:NBOTTOM := 100
OBRW:ACOLS[1]:CHEADER := PADR("NAME", 15)
OBRW:ACOLS[2]:CHEADER := "TYPE"
OBRW:ACOLS[2]:NDATASTRALIGN := AL_CENTER
OBRW:ACOLS[2]:NHEADSTRALIGN := AL_CENTER
OBRW:ACOLS[3]:CHEADER := "SIZE"
OBRW:ACOLS[3]:NDATASTRALIGN := AL_RIGHT
OBRW:ACOLS[3]:NHEADSTRALIGN := AL_RIGHT
OBRW:ACOLS[4]:CHEADER := "LENGTH"
OBRW:ACOLS[4]:NDATASTRALIGN := AL_RIGHT
OBRW:ACOLS[4]:NHEADSTRALIGN := AL_RIGHT
OBRW:NMARQUEESTYLE := MARQSTYLE_HIGHLCELL
OBRW:LRECORDSELECTOR := .F.
OBRW:CREATEFROMCODE()
ODLG:OCLIENT := OBRW
@120, 60 BUTTON OBTN PROMPT "PROXIMO" OF ODLG ;
ACTION DLG2( OBRW, ASTRUC, ODLG ) PIXEL
ACTIVATE DIALOG ODLG CENTERED ;
ON INIT OBRW:SETFOCUS()
RETURN NIL
STATIC FUNCTION DLG2( OBRW, ASTRUC, ODLG )
LOCAL ODLG1, OBRW1
DEFINE DIALOG ODLG1 FROM 200, 200 TO 500, 510 PIXEL
OBRW1 := TXBROWSE():NEW( ODLG1 )
OBRW1:SETARRAY( ASTRUC )
OBRW1:NTOP := 10
OBRW1:NLEFT := 10
OBRW1:NRIGHT := 150
OBRW1:NBOTTOM := 100
for n = 1 to 4
OBRW1:ACOLS[n]:CHEADER := OBRW:ACOLS[n]:CHEADER
OBRW1:ACOLS[n]:NDATASTRALIGN := OBRW:ACOLS[n]:NDATASTRALIGN
OBRW1:ACOLS[n]:NHEADSTRALIGN := OBRW:ACOLS[n]:NHEADSTRALIGN
next
OBRW1:DELCOL(2)
OBRW1:NMARQUEESTYLE := MARQSTYLE_HIGHLCELL
OBRW1:LRECORDSELECTOR := .F.
OBRW1:CREATEFROMCODE()
ODLG1:OCLIENT := OBRW1
ACTIVATE DIALOG ODLG1 ON INIT OBRW1:SETFOCUS()
RETURN NIL
Mais alguma sugestão ?
Obrigado a todos,
Rossine.
Posted: Fri Feb 08, 2008 7:43 pm
by karinha
Desculpe amigão, mas ahi, entra meus limites, não manjo nada de XBROWSE...
Talvez algum mestre em XBROWSE.