Page 1 of 1

Dialogo Sobre Dialogo

PostPosted: Tue Oct 20, 2015 4:46 pm
by Maggiro
Buenos Dias Amigos del Foro:
- Tengo un primer Dialogo como centro de operaciones.
- Si elijo ejecutar alguna operacion (por ejemplo numero 1). Esta operacion abre otro
Dialogo que no tiene caption, solo un formato con gets para llenar, y va como incrustada
hacia una parte del primer Dialogo.
- La pregunta:
- Si deseo que, el primer dialogo mantenga el color activo mientras lleno el formato
en el segundo dialogo, qué comando debo usar?

Gracias por Vuestras Sugerencias
Saludos
Julio César Gómez Cortéz
Godryc Experiencias
Lima - Perú

Re: Dialogo Sobre Dialogo

PostPosted: Tue Oct 20, 2015 5:33 pm
by Antonio Linares
Julio,

Si el segundo diálogo es modal, no hay forma de que el diálogo anterior mantenga el color de activo.

Tendriais que usar un objeto TPanel en vez de un diálogo, para situar los GETs.

Re: Dialogo Sobre Dialogo

PostPosted: Tue Oct 20, 2015 9:42 pm
by FranciscoA
Saludos, Antonio.

Maggiro wrote:Buenos Dias Amigos del Foro:
- Tengo un primer Dialogo como centro de operaciones.
- Si elijo ejecutar alguna operacion (por ejemplo numero 1). Esta operacion abre otro
Dialogo que no tiene caption, solo un formato con gets para llenar, y va como incrustada
hacia una parte del primer Dialogo.


Julio César.
No tengo la respuesta para tu pregunta.
Sin embargo desarrollé hace tiempo una pequeña aplicación que trabaja exactamente como lo describes.
El caso mio es que no he sido capaz de incrustar de manera automática el segundo dialog sobre el primero, en las coordenadas deseadas.
Claro que lo he solucionado "manualmente" aumentando o disminuyendo las coordenadas, hasta calzar. Pero "esto no es el chiste".

Estoy utilizando lo siguiente:
Code: Select all  Expand view
Function ModifEntrada(oDlgPadre)
-----
  DEFINE DIALOG oDlg RESOURCE "CAPTAENTRADA"   //dialog sin caption
     
   REDEFINE GET....
....
   ACTIVATE DIALOG oDlg CENTERED ;
       ON INIT ( oDlg:SetSize(oDlgPadre:nWidth-6,oDlgPadre:nHeight-190), oDlg:Move(oDlgPadre:nTop+305,oDlgPadre:nLeft+257) )
return nil
 

Como dije, las coordenadas +257 tengo que ponerla manualmente, ya que no obedece solamente a oDlgPadre:nLeft, que es lo que quiero,
ya que al cambiar de monitor con resolucion diferente, se distorciona la posicion a la izquierda. Es decir oDlgPadre:nTop+305 trabaja bien,
no así oDlgPadre:nLeft. Bueno, el nTop+305 tambien lo pongo manualmente pero funciona, no así el nLeft.

Tambien se pierde la coordenada nLeft, si muevo antes el primer dialog.

Podrías mostrar como lo has hecho?

Algún otro amigo del foro?

Saludos.

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 12:22 am
by Maggiro
Sr Antonio:

Lo que veo en los dialogos es que al quedar desactivado
el dialogo anterior, el color de fondo permanece inalterable:
Image
Image
Image
solo el caption queda en color inactivo

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 12:29 am
by Maggiro
Hola Francisco:
Sobre tu pregunta ...
- Uso coordenadas fijas ya calculadas para el lugar donde se presenta el dialogo
incrustado.
- con la clausula OF oWnd en el segundo dialogo, éste queda dependiente del primero
se mueva donde se mueva el primero, se mueve todo.
Saludos

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 7:45 am
by Antonio Linares
Julio,

Ese cambio de color del título es un comportamiento por defecto de Windows.

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 12:59 pm
by RSalazarU
Julio,

Otra solucion seria:

1. Colocar los controles del segundo dialogo en el primer dialogo (en la posicion que quieres que aparescan) y ocultarlos.
2. Hacer que aparescan vajo cierta condicion, y se deshabiliten los otros (los del primer dialogo).

Espero te ayude.

Atentamente,

Rolando.
Cochabamba, Bolivia

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 1:44 pm
by Antonio Linares
Rolando,

Muy buena sugerencia :-)

Re: Dialogo Sobre Dialogo

PostPosted: Wed Oct 21, 2015 1:45 pm
by karinha

Re: Dialogo Sobre Dialogo

PostPosted: Thu Oct 22, 2015 11:20 pm
by FranciscoA
Gracias a todos. Lo he solucionado asi.

Code: Select all  Expand view
Function ModifEntrada(oDlgPadre)
local oRec := oDlgPadre:GetRect()
-----
  DEFINE DIALOG oDlg RESOURCE "CAPTAENTRADA"   //dialog sin caption
     
   REDEFINE GET....
....
   ACTIVATE DIALOG oDlg CENTERED ;
       ON INIT ( oDlg:SetSize(oDlgPadre:nWidth-6,oDlgPadre:nHeight-190), oDlg:Move(oRec:nBottom-oDlg:nHeight,oRec:nLeft+3) )
return nil
 


Saludos.