Dialog de recurso incrustada en una ventana
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Dialog de recurso incrustada en una ventana
Amigos,
Ya se que está en la tapa del libro, pero arranqué el libro por la mitad y en mis aplicaciones siempre he usado Dialogs, con excepción de la ventana principal.
Por alguna parte vi que puedo pasar todas mis dialogs a "Child No Border" y luego incrustarlas en ventanas para utilizar estos recursos que ya tengo hechos dentro de ventanas, y dar a los mismos nuevas ventajas.
Pero...., como no me acuerdo donde lo leí, podrían comentarme como incrusto las dialogs sin bordes en las ventanas ajustándolas al tamaño de la misma?
Gracias desde ya, y disculpen mi ignorancia.
Ya se que está en la tapa del libro, pero arranqué el libro por la mitad y en mis aplicaciones siempre he usado Dialogs, con excepción de la ventana principal.
Por alguna parte vi que puedo pasar todas mis dialogs a "Child No Border" y luego incrustarlas en ventanas para utilizar estos recursos que ya tengo hechos dentro de ventanas, y dar a los mismos nuevas ventajas.
Pero...., como no me acuerdo donde lo leí, podrían comentarme como incrusto las dialogs sin bordes en las ventanas ajustándolas al tamaño de la misma?
Gracias desde ya, y disculpen mi ignorancia.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
José Murugosa
FWH + Harbour + Bcc7. Una seda!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
José,
Aqui tienes un ejemplo de una técnica mejor aún, que consiste en cambiar los controles del diálogo a la ventana, usando la función SetParent():
Aqui tienes un ejemplo de una técnica mejor aún, que consiste en cambiar los controles del diálogo a la ventana, usando la función SetParent():
Code: Select all
#include "FiveWin.ch"
#define COLOR_BTNFACE 15
function Main()
local oWnd
USE Customer
DEFINE WINDOW oWnd TITLE "Test" MDI
ACTIVATE WINDOW oWnd ;
ON INIT BuildChild()
return nil
function BuildChild()
local oChild
DEFINE WINDOW oChild TITLE "A Child Window" MDICHILD ;
COLOR 0, GetSysColor( COLOR_BTNFACE )
ACTIVATE WINDOW oChild ;
ON INIT BuildDialog( oChild )
return nil
function BuildDialog( oChild )
local oDlg, oBrw, oSay, cText := "Hello World!"
DEFINE DIALOG oDlg RESOURCE "DE_HEADER_BROWSE" OF oChild
oBrw = TXBrowse():New( oDlg )
oBrw:CreateFromResource( 10 )
oBrw:SetRDD()
REDEFINE BUTTON ID 20 OF oDlg
REDEFINE BUTTON ID 30 OF oDlg
REDEFINE BUTTON ID 40 OF oDlg
REDEFINE BUTTON ID 50 OF oDlg
REDEFINE BUTTON ID 60 OF oDlg
REDEFINE BUTTON ID 70 OF oDlg
REDEFINE BUTTON ID 80 OF oDlg
REDEFINE BUTTON ID 100 OF oDlg
REDEFINE BUTTON ID 1 OF oDlg
REDEFINE SAY oSay VAR cText ID 90 OF oDlg
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT ChangeParent( oDlg, oChild )
oDlg:End()
oChild:bResized = { || oBrw:SetSize( oChild:nWidth - 117, oChild:nHeight - 60 ),;
oSay:nTop := oChild:nHeight - 55, oSay:nLeft := ( oChild:nWidth / 2 ) - oSay:nWidth / 2 }
oChild:SetSize( 800, 400 )
return nil
function ChangeParent( oDlg, oChild )
local n
for n = 1 to Len( oDlg:aControls )
SetParent( oDlg:aControls[ n ]:hWnd, oChild:hWnd )
AAdd( oChild:aControls, oDlg:aControls[ n ] )
next
return nil
- jose_murugosa
- Posts: 943
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Hola Antonio
Estaba tambien buscando algo como esto, pero tal y como lo comenta Jose, es posible quitarle el borde al dialogo que salga sin el caption ?
Lo que busco, es que al momento de presentar las hijas, estas salgan en una posicion determinada y sin caption ni bordes.
Saludos
Estaba tambien buscando algo como esto, pero tal y como lo comenta Jose, es posible quitarle el borde al dialogo que salga sin el caption ?
Lo que busco, es que al momento de presentar las hijas, estas salgan en una posicion determinada y sin caption ni bordes.
Saludos
FWH 10.6 + xHarbour + Borland 582
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Ray, lo uso de esta forma:
DEFINE ICON oIcon RESOURCE "IconSys"
DEFINE WINDOW oWChld MDIChild FROM 1,2 TO 2,2 OF oWnd TITLE cTitle NOZOOM ICON oIcon
DEFINE DIALOG oDlg RESOURCE "Dialogo" FONT oWnd:oFont OF oWChld
...
ACTIVATE DIALOG oDlg NOWAIT VALID (oWChld:End(),.T.)
ACTIVATE WINDOW oWChld ;
ON INIT (oDlg:Move(0,0)) ;
ON RESIZE (oWChld:SetSize(oDlg:nWidth+nW,oDlg:nHeight+nH)) ;
VALID (oWChld:=Nil,Close_Dlg(),.T.)
Puedes quitara el caption y bordes con tu editor de recursos.
DEFINE ICON oIcon RESOURCE "IconSys"
DEFINE WINDOW oWChld MDIChild FROM 1,2 TO 2,2 OF oWnd TITLE cTitle NOZOOM ICON oIcon
DEFINE DIALOG oDlg RESOURCE "Dialogo" FONT oWnd:oFont OF oWChld
...
ACTIVATE DIALOG oDlg NOWAIT VALID (oWChld:End(),.T.)
ACTIVATE WINDOW oWChld ;
ON INIT (oDlg:Move(0,0)) ;
ON RESIZE (oWChld:SetSize(oDlg:nWidth+nW,oDlg:nHeight+nH)) ;
VALID (oWChld:=Nil,Close_Dlg(),.T.)
Puedes quitara el caption y bordes con tu editor de recursos.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Alfredo :
No se hice o como lo hice ( todo seguramente mal ) pero me salen 2 childs entrelazadas. , seguire probando.
Antonio :
Hay forma de "pasar" los controles del dialogo a la child que no sean "necesarios" de REDEFINIR ? i.e. los say con -1 yo uso algunos groups solo como "separadores".
Por que me paso solo los controles que estan Redefinidos.
Saludos
No se hice o como lo hice ( todo seguramente mal ) pero me salen 2 childs entrelazadas. , seguire probando.
Antonio :
Hay forma de "pasar" los controles del dialogo a la child que no sean "necesarios" de REDEFINIR ? i.e. los say con -1 yo uso algunos groups solo como "separadores".
Por que me paso solo los controles que estan Redefinidos.
Saludos
FWH 10.6 + xHarbour + Borland 582
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Esta función cambia de padre a todos los controles, incluyendo los que no estén redefinidos:
Code: Select all
#define GW_CHILD 5
#define GW_HWNDNEXT 2
function ChangeParent( oDlg, oChild )
local hCtrl := GetWindow( oDlg:hWnd, GW_CHILD )
local n
while hCtrl != 0
SetParent( hCtrl, oChild:hWnd )
hCtrl = GetWindow( hCtrl, GW_HWNDNEXT )
end
for n = 1 to Len( oDlg:aControls )
AAdd( oChild:aControls, oDlg:aControls[ n ] )
next
return nil
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Raymundo,
Prueba así:
Prueba así:
Code: Select all
#define GW_CHILD 5
#define GW_HWNDNEXT 2
function ChangeParent( oDlg, oWnd )
local hCtrl := GetWindow( oDlg:hWnd, GW_CHILD )
local n, aChilds := {}
while hCtrl != 0
AAdd( aChilds, hCtrl )
hCtrl = GetWindow( hCtrl, GW_HWNDNEXT )
end
AEval( aChilds, { | hCtrl | SetParent( hCtrl, oWnd:hWnd ) } )
for n = 1 to Len( oDlg:aControls )
AAdd( oWnd:aControls, oDlg:aControls[ n ] )
next
return nil
Hola Antonio,
Gracias por esta nueva aportación
Tengo unos problemas con esta función:
1º Desde un get no funciona ni el tabulador ni el intro para cambiar a otro.
2º Uso groupbox sin redifinir en el programa (-1) para mostrar datos agrupados y con esta función no refrescan el fondo.
Gracias por esta nueva aportación
Tengo unos problemas con esta función:
1º Desde un get no funciona ni el tabulador ni el intro para cambiar a otro.
2º Uso groupbox sin redifinir en el programa (-1) para mostrar datos agrupados y con esta función no refrescan el fondo.
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Fernando González Diez
ALSIS GHE Sistemas Informáticos