Una de dialogos

Post Reply
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Una de dialogos

Post by jmua »

Hola foro.
A ver si alguien me puede ayudar.
Tengo un problema y es que abro mi aplicacion con un DIALOG, el cual
es la ventana principal de la app.
En el dialogo tengo un menu y una serie de botones con los cuales
accedo al resto de la app.
hasta aqui bien. Pulso un boton y abro abro otro dialogo que despues
minimizo para poder acceder a una consulta en otro dialogo, pero no me
deja mientras no cierre el anterior.
Como puedo hacer para poder tener abiertos varios dialogos a la vez.
Todos los dilog que utilizo estan en un fichero de recursos RES.

Muchas gracias
José Martin Uriarte
jmuarg@yahoo.es
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

José,

Utiliza la cláusula OF para especificar quien es el "padre" de un determinado diálogo:

DEFINE DIALOG oDlg ... OF oWnd

Si ambos diálogos tienen como "padre" la ventana principal, entonces podrás pasar de un diálogo a otro.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

Antonio esto es lo que hago pero no me deja abrir otro dialogo mientras tenga el anterior abierto
Mi main dialog es asi:
DEFINE DIALOG oWnd RESNAME "MENU" FONT oFont ICON oIcon TITLE cTitle
STYLE
WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|
WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE

Y los dialogos hijos son:
DEFINE DIALOG oDlg RESNAME "MANTEGEN" FONT oFont ICON oIcon OF oWnd
STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE

Saludos
Antonio Linares wrote:José,

Utiliza la cláusula OF para especificar quien es el "padre" de un determinado diálogo:

DEFINE DIALOG oDlg ... OF oWnd

Si ambos diálogos tienen como "padre" la ventana principal, entonces podrás pasar de un diálogo a otro.
José Martin Uriarte
jmuarg@yahoo.es
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

_.

Esto funciona Muchas gracias

Saludos
_ wrote:Jose activa tus dialogos hijos con la clausula NoWait

Define dialog oDlg Resource "DL_HIJO"

Activate dialog oDlg NOWAIT

espero te sirva

salu2
José Martin Uriarte
jmuarg@yahoo.es
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

José Martin,

Tienes que comprender la diferencia entre caja de diálogo modales y no modales, y por otra parte el concepto de "padre" de un determinado diálogo. Si no especificas la cláusula OF, FiveWin usará como "padre" la ventana ó diálogo que en ese momento este seleccionada.

Un diálogo modal no permite cambiar a otro diálogo modal, salvo que sea "hijo" de este anterior.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

Antonio.
Ya comprendo. Ahora te hago otra pregunta.
*-----------------------------------------------------------
Entro en la aplicación
Voy a mCliente.prg a Consultar la tabla Clientes
Una vez en clientes minimizo la ventana
una vez minimizada me voy a consulta almacen
Consulto almacen y cierro la ventana
Me voy a restaurar le ventana de clientes y me da un casque
que dice no existe el alias "CLI"
Por que hace esto?
Que hago mal?
Debo de abrir las tablas en la ventana principal ?

Gracis de antemano
Un saludo


//....................................................
/MyAplic.Prg
*..........
#Include "FiveWin.Ch"
*...........
Static oWndMain
*...........
Function MainAplic()
Local bTnCli,bTnalm,bTnPob,oFont
DEFINE DIALOG oWndMain RESOURCE 'Principal' FON oFont

REDEFINE BUTTON BtnCli ID 201 OF oWndMain FONT oFont ;
ACTION (ConsultaCli(oWndMain))
//Voy a mCliente.prg a Consultar la tabla Clientes

REDEFINE BUTTON BtnAlm ID 202 OF oWndMain FONT oFont ;
ACTION (ConsultaAlm(oWndMain)
//Voy a mAlmacen.prg a Consultar la tabla Almacen

REDEFINE BUTTON BtnPob ID 203 OF oWndMain FONT oFont ;
ACTION (ConsultaPob(oWndMain)
//Voy a mPoblaci.prg a Consultar la tabla poblaci

REDEFINE BUTTON BtnEnd ID 204 OF oWndMain FONT oFont ;
ACTION (oWndMain:End())

ACTIVATE DIALOG oWndMain CENTERED
Return Nil
-----------------------------------------------------
-----------------------------------------------------
#Include "FiveWin.Ch"
*Mcliente.Prg
Function ConsultaCli(oWndMain)
Local oDlgCli,oBtend,oLbx,oFont,...etc.
If Abretablas()
Select('Cli')
DEFINE DIALOG oDlgCli RESOURCE 'Clientes' FONT oFont OF oWndMain

REDEFINE LISTBOX oLbx ;
FIELDS ;
Cli->CLICODIGO ,;
Cli->CLINOMBRE ,;
Cli->CLIDIRECC ,;
Cli->CLIPOBLAC ,;
Cli->CLIPOSTAL ,;
Cli->CLIPROVIN ,;
Cli->CLIDNINIF ;
HEADERS ;
"Código","Empresa","Dirección" ,;
"Población","C.Postal","Provincia","Dni / Nif" ;
FIELDSIZES 50,180,180,180,50,100,100 ;
ID 101 OF oDlgcli ;
UPDATE
oLbx:nLineStyle := 3
oLbx:bChange := {||oLbx:Refresh()}

REDEFINE BUTTON oBtEnd ID 102 OF oDlgCli FONT oFont ;
ACTION (oDlgCli:End())

ACTIVATE DIALOG oDlgCli CENTERED NOWAIT

oDlg:End()
oFont:End()

Dbcloseall()
Else
MsgInfo('Imposible abrir tablas','ERROR')
Endif
Return Nil
-----------------------------------------------------
-----------------------------------------------------
*MAlmacen.Prg
#Include "FiveWin.Ch"
Function ConsultaCli(oWndMain)
Local oDlgAlm,oBtend,oLbx,oFont...etc.
If Abretablas()
DEFINE DIALOG oDlgAlm RESOURCE 'Almacen' FONT oFont OF oWndMain

Select('Alm')
REDEFINE LISTBOX oLbx ;
FIELDS ;
Alm->CLIENTE ,;
Alm->ARTICULO ,;
Alm->DESCRIPC ,;
Dtoc(Alm->FECHA_ENT) ,;
Transform(Alm->CANTIDAD,'@Z 999,999') ;
HEADERS ;
"Cliente","Articulo","Descripción","Cantidad" ;
ID 101 OF oDlgAlm;
UPDATE
oLbx:nLineStyle := 3
oLbx:bChange := {||oLbx:Refresh()}


REDEFINE BUTTON oBtEnd ID 102 OF oDlgAlm FONT oFont ;
ACTION (oDlgAlm:End())


ACTIVATE DIALOG oDlgAlm CENTERED NOWAIT

oDlg:End()
oFont:End()

Dbcloseall()
Else
MsgInfo('Imposible abrir tablas','ERROR')
Endif
Return Nil
//--------------------------------------------------------------
Antonio Linares wrote:José Martin,

Tienes que comprender la diferencia entre caja de diálogo modales y no modales, y por otra parte el concepto de "padre" de un determinado diálogo. Si no especificas la cláusula OF, FiveWin usará como "padre" la ventana ó diálogo que en ese momento este seleccionada.

Un diálogo modal no permite cambiar a otro diálogo modal, salvo que sea "hijo" de este anterior.
José Martin Uriarte
jmuarg@yahoo.es
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

José Martin,

Cuando usas:

ACTIVATE DIALOG oDlgAlm CENTERED NOWAIT

la ejecución de la aplicación NO se detiene ahí, por lo que continúa, y unas líneas más adelante tu llamas a DbCloseAll() en donde cierras las bases de datos.

Si usas diálogos no modales, entonces las bases de datos no las puedes cerrar ahí.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply