by FranciscoA » Fri Sep 17, 2010 3:07 pm
Hola, aquí te dejo un ejemplo de como puedes hacerlo. Espero te sea útil.
Saludos
//00000000000000000000000000000000000000000000000000
//-----------------------------
FUNCTION MISBROWSES()
local oBrw,oBrw2,oCol,oCol2,n,oDlg,oBt2
local aObjetos,nAltoIniDlg,nAnchoIniDlg,aLinColCtrls, aLinCtrls, aColCtrls
local nAltoIniLbx,nAnchoIniLbx
local Area1,Area2
local nWidthRes := GetSysMetrics(SM_CXSCREEN)
local nHeightRes := GetSysMetrics(SM_CYSCREEN)
DEFINE DIALOG oDlg RESOURCE "MISBROWSES" //debes crearlo 2 browses horizont y botones en la parte de abajo.
//EL PRIMER BROWSE
dbUseArea(.t.,,"Base1","Base1",.f.)
Area1:=Alias()
oBrw := TXBrowse():New( oDlg )
oBrw:cAlias:=(Area1)
(oBrw:cAlias)->(dbgotop())
//Tu codigo para definiciones y creacion de columnas de oBrw
* oCol = oBrw:AddCol()
* .....
* .....
oBrw:CreateFromResource(180)
oBrw:SetRDD()
//EL SEGUNDO BROWSE
dbUseArea(.t.,,"Base2","Base2",.f.)
Area2:=Alias()
oBrw2 := TXBrowse():New( oDlg )
oBrw2:cAlias:=(Area2)
(oBrw2:cAlias)->(dbgotop())
//Tu codigo para definiciones y creacion de columnas de oBrw2
* oCol2 = oBrw:AddCol()
* .....
* .....
oBrw2:CreateFromResource(181)
oBrw2:SetRDD()
REDEFINE BUTTONBMP oBt2 ID 236 OF oDlg ACTION ( oDlg:End() ) CANCEL BITMAP "SALIR" TEXTRIGHT
//Para mover los objetos deseados
aObjetos :={oBrw,oBrw2,oBt2} //los controles a mover
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( nAltoIniDlg:=oDlg:nHeight,nAnchoIniDlg:=oDlg:nWidth,;
nAltoIniLbx:=oBrw:nHeight,nAnchoIniLbx:=oBrw:nWidth,;
aLinColCtrls:=LinColCtrl(aObjetos), aLinCtrls:=aLinColCtrls[1], aColCtrls:=aLinColCtrls[2] ,;
oDlg:SetSize(nWidthRes,nHeightRes), oDlg:Move(0,0) ,;
Posicionarlos(oDlg,oBrw,oBrw2,aObjetos,nAltoIniDlg,nAnchoIniDlg,nAltoIniLbx,nAnchoIniLbx,aLinCtrls,aColCtrls) )
//Cerrar tus dbfs?
dbCloseall()
RETURN NIL
//------------------------------------------------------------------------
Function Posicionarlos(oDlg,oBrw,oBrw2,aObjetos,nAltoIniDlg,nAnchoIniDlg,nAltoIniLbx,nAnchoIniLbx,aLinCtrls,aColCtrls)
local n:=0, nNvasLineas:=0,nNvasColumn:=0
//Conocer diferencia del tamaño que adquiere el oDlg (Resize)
nNvasLineas:= oDlg:nHeight - nAltoIniDlg
nNvasColumn:= oDlg:nWidth - nAnchoIniDlg
//colocar controles deseados en nuevas coordenadas
//Si es un listbox, cambia alto y ancho, a diferencia de los demas.
for n:=1 to len(aObjetos)
if upper(aObjetos[n]:ClassName()) == 'TWBROWSE' ; // Si es un listbox
.or. upper(aObjetos[n]:ClassName()) == 'TXBROWSE'
oBrw:nWidth := nAnchoIniLbx + nNvasColumn
oBrw:nHeight:= nAltoIniLbx + nNvasLineas
oBrw2:nWidth := oBrw:nWidth
oBrw2:Move( oBrw:nHeight+56,oBrw:nLeft() )
else
aObjetos[n]:Move( aLinCtrls[n]+nNvasLineas, aColCtrls[n] )
endif
next
oDlg:Refresh()
SysRefresh()
RETURN NIL
//00000000000000000000000000000000000000000000000000
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql