FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ::SetControl() para 2 controles. C贸mo?
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
::SetControl() para 2 controles. C贸mo?
Posted: Fri Sep 17, 2010 12:55 PM
Hola a todos,

Si quiero que un control se redimensione autom谩ticamente (usando toda la ventana) cuando se cambia el tama帽o de su ventana contenedora MDICHILD, debo usar oWnd:Setcontrol( omiCtrl ). Esto es lo normal.

Ahora bien, si tengo 2 controles RICHEDIT que quiero que ocupen la mitad horizontal de la ventana cada uno y que cuando se cambia el tama帽o de su ventana contenedora MDICHILD, c贸mo debo hacerlo?

Es decir SetControl() me sirve para un solo control, y yo quiero utilizar 2 controles con la mitad de la ventana para cada uno. Se les ocurre como hacerlo?

Muchas gracias.
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: ::SetControl() para 2 controles. C贸mo?
Posted: Fri Sep 17, 2010 01:38 PM

FiveWidi:
Creo que tendr铆as que usar los SPLITTERS. Busca en el foro por la palabra splitter.
Saludos.

Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: ::SetControl() para 2 controles. C贸mo?
Posted: Fri Sep 17, 2010 03: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
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: ::SetControl() para 2 controles. C贸mo?
Posted: Sat Sep 18, 2010 01:44 PM
FranciscoA wrote:Hola, aqu铆 te dejo un ejemplo de como puedes hacerlo. Espero te sea 煤til.
Saludos


Gracias por el c贸digo, lo revisar茅 para adaptarlo a mi necesidad.

Un saludo
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion