In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

No tengo claso Paso de par

Foro de Xailer profesional en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Hola,
Vamos a ver si me puedo explicar...
Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
aplicación... Calculadora...
Y... un botón que tiene que ejecutar unas acciones dependiendo de que
FormCHILD tenga activo... en concreto tiene que lanzar un evento que está en
su FormChild...
oFormMenu:BtnOnClick := "oFormChild:Evento"
¿?¿?¿?
Mas o menos sería algo así...
1.- Padre llama a hijo.
2.- Hijo se visualiza y tiene unas acciones definidas.
3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
Pues eso... que no se como hacerlo ...
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

No tengo claso Paso de par

Mensaje por ignacio »

Respondido en otro foro.
Saludos,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola,
>
> Vamos a ver si me puedo explicar...
> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
> aplicación... Calculadora...
> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
> FormCHILD tenga activo... en concreto tiene que lanzar un evento que está
> en
> su FormChild...
>
> oFormMenu:BtnOnClick := "oFormChild:Evento"
> ¿?¿?¿?
>
>
> Mas o menos sería algo así...
>
> 1.- Padre llama a hijo.
> 2.- Hijo se visualiza y tiene unas acciones definidas.
> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>
> Pues eso... que no se como hacerlo ...
>
>
>
> Un Saludo,
> Xevi.
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Ignacio,
En el Form padre MDI tengo un botón en una ReBar...
:AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
....
La función xBusca, debería de lanzar el Evento KeyDown del Browse activo del
Form hijo...
Y... según lo que me has comentado...
FUNCTION xBusca( oSender )
*::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
*::oMDIClient:oActiveControl:Metodo()
*oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
Return Nil
Para modificar una Data o lanzar un Evento del Form que ha llamado al
hijo... oParent... PERO
Mi problema... No puedo lanzar un Evento, o modificar una Data de un Form
hijo...
¿Que hago mal???
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Respondido en otro foro.
>
> Saludos,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Hola,
>>
>> Vamos a ver si me puedo explicar...
>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
>> aplicación... Calculadora...
>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que está
>> en
>> su FormChild...
>>
>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>> ¿?¿?¿?
>>
>>
>> Mas o menos sería algo así...
>>
>> 1.- Padre llama a hijo.
>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>
>> Pues eso... que no se como hacerlo ...
>>
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

No tengo claso Paso de par

Mensaje por ignacio »

Xevi,
> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
> del Form hijo...
Los eventos normalmente se disparan sólo por la actuación del usuario, no
tiene mucho sentido que tu provocas una pulsación de teclado.
> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
No tiene mucho sentido. Supongo que estarás llamando al método que recoge el
evento OnKeyDown del Browse, pero eso no quiere decir que el hecho de llamar
a dicho evento se vaya a generar ninguna pulsación de teclado, en absoluto.
Si quieres simular la pulsación de una tecla simplemente haz
oControl:PostMsg( WM_KEYDOWN, VK_F3).
Como normal general, los eventos se disparan solos por el sistema, el
usario, etc.
> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
Tienes toda la razón. Se me ha ido completamente la cabeza, oActiveControl
devuelve el control activo dentro de un Form, y no es el caso. Efectivamente
no hay forma de conocer el formulario activo. Lo arreglaremos cuanto antes,
posiblemente poniendo una propiedad oActiveForm en Application.
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
> En el Form padre MDI tengo un botón en una ReBar...
> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
> ...
> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
> del Form hijo...
> Y... según lo que me has comentado...
>
> FUNCTION xBusca( oSender )
> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
> *::oMDIClient:oActiveControl:Metodo()
> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
> Return Nil
>
> Para modificar una Data o lanzar un Evento del Form que ha llamado al
> hijo... oParent... PERO
> Mi problema... No puedo lanzar un Evento, o modificar una Data de un Form
> hijo...
>
> ¿Que hago mal???
>
> Un Saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Respondido en otro foro.
>>
>> Saludos,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Hola,
>>>
>>> Vamos a ver si me puedo explicar...
>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
>>> aplicación... Calculadora...
>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>> está en
>>> su FormChild...
>>>
>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>> ¿?¿?¿?
>>>
>>>
>>> Mas o menos sería algo así...
>>>
>>> 1.- Padre llama a hijo.
>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>
>>> Pues eso... que no se como hacerlo ...
>>>
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Ignacio,
Y, digo yo... ¿seria posible ademas poner una propiedad en Application, que
nos de un Array de los Forms abiertos??? Lo digo porque así podríamos
aaceder a cualquier form que tengamos abierto FACILMENTE !!!
Application:aOpenForms
Application:oActiveForm
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:42ce5f20$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
>> del Form hijo...
>
> Los eventos normalmente se disparan sólo por la actuación del usuario, no
> tiene mucho sentido que tu provocas una pulsación de teclado.
>
>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>
> No tiene mucho sentido. Supongo que estarás llamando al método que recoge
> el evento OnKeyDown del Browse, pero eso no quiere decir que el hecho de
> llamar a dicho evento se vaya a generar ninguna pulsación de teclado, en
> absoluto. Si quieres simular la pulsación de una tecla simplemente haz
> oControl:PostMsg( WM_KEYDOWN, VK_F3).
>
> Como normal general, los eventos se disparan solos por el sistema, el
> usario, etc.
>
>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>
> Tienes toda la razón. Se me ha ido completamente la cabeza, oActiveControl
> devuelve el control activo dentro de un Form, y no es el caso.
> Efectivamente no hay forma de conocer el formulario activo. Lo
> arreglaremos cuanto antes, posiblemente poniendo una propiedad oActiveForm
> en Application.
>
> Un saludo,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Ignacio,
>>
>> En el Form padre MDI tengo un botón en una ReBar...
>> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
>> ...
>> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
>> del Form hijo...
>> Y... según lo que me has comentado...
>>
>> FUNCTION xBusca( oSender )
>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>> *::oMDIClient:oActiveControl:Metodo()
>> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>> Return Nil
>>
>> Para modificar una Data o lanzar un Evento del Form que ha llamado al
>> hijo... oParent... PERO
>> Mi problema... No puedo lanzar un Evento, o modificar una Data de un Form
>> hijo...
>>
>> ¿Que hago mal???
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Respondido en otro foro.
>>>
>>> Saludos,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>> Hola,
>>>>
>>>> Vamos a ver si me puedo explicar...
>>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
>>>> aplicación... Calculadora...
>>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>>> está en
>>>> su FormChild...
>>>>
>>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>>> ¿?¿?¿?
>>>>
>>>>
>>>> Mas o menos sería algo así...
>>>>
>>>> 1.- Padre llama a hijo.
>>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>>
>>>> Pues eso... que no se como hacerlo ...
>>>>
>>>>
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

No tengo claso Paso de par

Mensaje por Francisco Sanchez »

xevi me parece que ya esta : Application:aForms, si estoy equivocado que me
corrigan pero creo que es asi.
Un saludo
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=42ce7db2@ozsrvnegro.ozlan.local...]42ce7db2@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
> Y, digo yo... ¿seria posible ademas poner una propiedad en Application,
> que nos de un Array de los Forms abiertos??? Lo digo porque así podríamos
> aaceder a cualquier form que tengamos abierto FACILMENTE !!!
>
> Application:aOpenForms
> Application:oActiveForm
>
>
> Un Saludo,
> Xevi.
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:42ce5f20$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
>>> del Form hijo...
>>
>> Los eventos normalmente se disparan sólo por la actuación del usuario, no
>> tiene mucho sentido que tu provocas una pulsación de teclado.
>>
>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>
>> No tiene mucho sentido. Supongo que estarás llamando al método que recoge
>> el evento OnKeyDown del Browse, pero eso no quiere decir que el hecho de
>> llamar a dicho evento se vaya a generar ninguna pulsación de teclado, en
>> absoluto. Si quieres simular la pulsación de una tecla simplemente haz
>> oControl:PostMsg( WM_KEYDOWN, VK_F3).
>>
>> Como normal general, los eventos se disparan solos por el sistema, el
>> usario, etc.
>>
>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>
>> Tienes toda la razón. Se me ha ido completamente la cabeza,
>> oActiveControl devuelve el control activo dentro de un Form, y no es el
>> caso. Efectivamente no hay forma de conocer el formulario activo. Lo
>> arreglaremos cuanto antes, posiblemente poniendo una propiedad
>> oActiveForm en Application.
>>
>> Un saludo,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Ignacio,
>>>
>>> En el Form padre MDI tengo un botón en una ReBar...
>>> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
>>> ...
>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse activo
>>> del Form hijo...
>>> Y... según lo que me has comentado...
>>>
>>> FUNCTION xBusca( oSender )
>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>> *::oMDIClient:oActiveControl:Metodo()
>>> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>> Return Nil
>>>
>>> Para modificar una Data o lanzar un Evento del Form que ha llamado al
>>> hijo... oParent... PERO
>>> Mi problema... No puedo lanzar un Evento, o modificar una Data de un
>>> Form hijo...
>>>
>>> ¿Que hago mal???
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>> mensaje news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>> Respondido en otro foro.
>>>>
>>>> Saludos,
>>>>
>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>> Hola,
>>>>>
>>>>> Vamos a ver si me puedo explicar...
>>>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA
>>>>> la
>>>>> aplicación... Calculadora...
>>>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>>>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>>>> está en
>>>>> su FormChild...
>>>>>
>>>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>>>> ¿?¿?¿?
>>>>>
>>>>>
>>>>> Mas o menos sería algo así...
>>>>>
>>>>> 1.- Padre llama a hijo.
>>>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>>>
>>>>> Pues eso... que no se como hacerlo ...
>>>>>
>>>>>
>>>>>
>>>>> Un Saludo,
>>>>> Xevi.
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

No tengo claso Paso de par

Mensaje por Francisco Sanchez »

con len( Application:aForms ) siempre sabras la longitud del array con lo
que conoceras el nº de formularios abiertos, simplemente tendrias que hacer
oForm := Application:aForms[nLen] para tener una referencia ( objeto o como
quieras llamarlo ) ultimo formulario abierto, por ejemplo, pero puedes jugar
con todo esto, buscar por el título del formulario para seleccionar uno en
concreto, no se, a tu gusto. Si estoy equivocado que me corrijan
rapidamente, jejeje espero no equivocarme )
Un saludo
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:[email=42ce8820@ozsrvnegro.ozlan.local...]42ce8820@ozsrvnegro.ozlan.local...[/email]
> xevi me parece que ya esta : Application:aForms, si estoy equivocado que
> me corrigan pero creo que es asi.
>
> Un saludo
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:[email=42ce7db2@ozsrvnegro.ozlan.local...]42ce7db2@ozsrvnegro.ozlan.local...[/email]
>> Ignacio,
>>
>> Y, digo yo... ¿seria posible ademas poner una propiedad en Application,
>> que nos de un Array de los Forms abiertos??? Lo digo porque así podríamos
>> aaceder a cualquier form que tengamos abierto FACILMENTE !!!
>>
>> Application:aOpenForms
>> Application:oActiveForm
>>
>>
>> Un Saludo,
>> Xevi.
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:42ce5f20$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Xevi,
>>>
>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>> activo del Form hijo...
>>>
>>> Los eventos normalmente se disparan sólo por la actuación del usuario,
>>> no tiene mucho sentido que tu provocas una pulsación de teclado.
>>>
>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>
>>> No tiene mucho sentido. Supongo que estarás llamando al método que
>>> recoge el evento OnKeyDown del Browse, pero eso no quiere decir que el
>>> hecho de llamar a dicho evento se vaya a generar ninguna pulsación de
>>> teclado, en absoluto. Si quieres simular la pulsación de una tecla
>>> simplemente haz oControl:PostMsg( WM_KEYDOWN, VK_F3).
>>>
>>> Como normal general, los eventos se disparan solos por el sistema, el
>>> usario, etc.
>>>
>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>
>>> Tienes toda la razón. Se me ha ido completamente la cabeza,
>>> oActiveControl devuelve el control activo dentro de un Form, y no es el
>>> caso. Efectivamente no hay forma de conocer el formulario activo. Lo
>>> arreglaremos cuanto antes, posiblemente poniendo una propiedad
>>> oActiveForm en Application.
>>>
>>> Un saludo,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>> Ignacio,
>>>>
>>>> En el Form padre MDI tengo un botón en una ReBar...
>>>> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
>>>> ...
>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>> activo del Form hijo...
>>>> Y... según lo que me has comentado...
>>>>
>>>> FUNCTION xBusca( oSender )
>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>> *::oMDIClient:oActiveControl:Metodo()
>>>> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>> Return Nil
>>>>
>>>> Para modificar una Data o lanzar un Evento del Form que ha llamado al
>>>> hijo... oParent... PERO
>>>> Mi problema... No puedo lanzar un Evento, o modificar una Data de un
>>>> Form hijo...
>>>>
>>>> ¿Que hago mal???
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>>> mensaje news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>> Respondido en otro foro.
>>>>>
>>>>> Saludos,
>>>>>
>>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>> Hola,
>>>>>>
>>>>>> Vamos a ver si me puedo explicar...
>>>>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>>>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA
>>>>>> la
>>>>>> aplicación... Calculadora...
>>>>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>>>>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>>>>> está en
>>>>>> su FormChild...
>>>>>>
>>>>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>>>>> ¿?¿?¿?
>>>>>>
>>>>>>
>>>>>> Mas o menos sería algo así...
>>>>>>
>>>>>> 1.- Padre llama a hijo.
>>>>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>>>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>>>>
>>>>>> Pues eso... que no se como hacerlo ...
>>>>>>
>>>>>>
>>>>>>
>>>>>> Un Saludo,
>>>>>> Xevi.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

No tengo claso Paso de par

Mensaje por joseluis »

Paco,
Sobre esto,
> xevi me parece que ya esta : Application:aForms, si estoy equivocado que me
> corrigan pero creo que es asi.
>
Tengo la siguiente duda. Si cada vez que se crea un nuevo formulario se
añade una referencia en Application:aForms, esa referencia se guarda
_solo_ cuando el 'padre' del formulario es Application o no ?
José?? Ignacio??
Saludos y gracias!
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

No tengo claso Paso de par

Mensaje por ignacio »

José Luis,
Se guarda en cualquier caso, incluso si es MDIChild
Un saludo,
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:[email=42ce8bdd@ozsrvnegro.ozlan.local...]42ce8bdd@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
>
> Sobre esto,
>
>> xevi me parece que ya esta : Application:aForms, si estoy equivocado que
>> me corrigan pero creo que es asi.
>>
>
>
> Tengo la siguiente duda. Si cada vez que se crea un nuevo formulario se
> añade una referencia en Application:aForms, esa referencia se guarda
> _solo_ cuando el 'padre' del formulario es Application o no ?
>
>
> José?? Ignacio??
>
> Saludos y gracias!
> José Luis Capel
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

No tengo claso Paso de par

Mensaje por ignacio »

Francisco,
Así es, efectivamente.
Un saludo,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:[email=42ce8820@ozsrvnegro.ozlan.local...]42ce8820@ozsrvnegro.ozlan.local...[/email]
> xevi me parece que ya esta : Application:aForms, si estoy equivocado que
> me corrigan pero creo que es asi.
>
> Un saludo
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:[email=42ce7db2@ozsrvnegro.ozlan.local...]42ce7db2@ozsrvnegro.ozlan.local...[/email]
>> Ignacio,
>>
>> Y, digo yo... ¿seria posible ademas poner una propiedad en Application,
>> que nos de un Array de los Forms abiertos??? Lo digo porque así podríamos
>> aaceder a cualquier form que tengamos abierto FACILMENTE !!!
>>
>> Application:aOpenForms
>> Application:oActiveForm
>>
>>
>> Un Saludo,
>> Xevi.
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:42ce5f20$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Xevi,
>>>
>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>> activo del Form hijo...
>>>
>>> Los eventos normalmente se disparan sólo por la actuación del usuario,
>>> no tiene mucho sentido que tu provocas una pulsación de teclado.
>>>
>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>
>>> No tiene mucho sentido. Supongo que estarás llamando al método que
>>> recoge el evento OnKeyDown del Browse, pero eso no quiere decir que el
>>> hecho de llamar a dicho evento se vaya a generar ninguna pulsación de
>>> teclado, en absoluto. Si quieres simular la pulsación de una tecla
>>> simplemente haz oControl:PostMsg( WM_KEYDOWN, VK_F3).
>>>
>>> Como normal general, los eventos se disparan solos por el sistema, el
>>> usario, etc.
>>>
>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>
>>> Tienes toda la razón. Se me ha ido completamente la cabeza,
>>> oActiveControl devuelve el control activo dentro de un Form, y no es el
>>> caso. Efectivamente no hay forma de conocer el formulario activo. Lo
>>> arreglaremos cuanto antes, posiblemente poniendo una propiedad
>>> oActiveForm en Application.
>>>
>>> Un saludo,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>> Ignacio,
>>>>
>>>> En el Form padre MDI tengo un botón en una ReBar...
>>>> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
>>>> ...
>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>> activo del Form hijo...
>>>> Y... según lo que me has comentado...
>>>>
>>>> FUNCTION xBusca( oSender )
>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>> *::oMDIClient:oActiveControl:Metodo()
>>>> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>> Return Nil
>>>>
>>>> Para modificar una Data o lanzar un Evento del Form que ha llamado al
>>>> hijo... oParent... PERO
>>>> Mi problema... No puedo lanzar un Evento, o modificar una Data de un
>>>> Form hijo...
>>>>
>>>> ¿Que hago mal???
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>>> mensaje news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>> Respondido en otro foro.
>>>>>
>>>>> Saludos,
>>>>>
>>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>> Hola,
>>>>>>
>>>>>> Vamos a ver si me puedo explicar...
>>>>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>>>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA
>>>>>> la
>>>>>> aplicación... Calculadora...
>>>>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>>>>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>>>>> está en
>>>>>> su FormChild...
>>>>>>
>>>>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>>>>> ¿?¿?¿?
>>>>>>
>>>>>>
>>>>>> Mas o menos sería algo así...
>>>>>>
>>>>>> 1.- Padre llama a hijo.
>>>>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>>>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>>>>
>>>>>> Pues eso... que no se como hacerlo ...
>>>>>>
>>>>>>
>>>>>>
>>>>>> Un Saludo,
>>>>>> Xevi.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

No tengo claso Paso de par

Mensaje por ignacio »

Francisco,
No estas equivocado en absoluto. No obstante creo que tenemos que tener un
oActiveForm, igual que tenemos un oActiveControl.
Un saludo,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:42ce88f3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> con len( Application:aForms ) siempre sabras la longitud del array con lo
> que conoceras el nº de formularios abiertos, simplemente tendrias que
> hacer oForm := Application:aForms[nLen] para tener una referencia ( objeto
> o como quieras llamarlo ) ultimo formulario abierto, por ejemplo, pero
> puedes jugar con todo esto, buscar por el título del formulario para
> seleccionar uno en concreto, no se, a tu gusto. Si estoy equivocado que me
> corrijan rapidamente, jejeje espero no equivocarme )
>
> Un saludo
>
> "Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
> news:[email=42ce8820@ozsrvnegro.ozlan.local...]42ce8820@ozsrvnegro.ozlan.local...[/email]
>> xevi me parece que ya esta : Application:aForms, si estoy equivocado que
>> me corrigan pero creo que es asi.
>>
>> Un saludo
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:[email=42ce7db2@ozsrvnegro.ozlan.local...]42ce7db2@ozsrvnegro.ozlan.local...[/email]
>>> Ignacio,
>>>
>>> Y, digo yo... ¿seria posible ademas poner una propiedad en Application,
>>> que nos de un Array de los Forms abiertos??? Lo digo porque así
>>> podríamos aaceder a cualquier form que tengamos abierto FACILMENTE !!!
>>>
>>> Application:aOpenForms
>>> Application:oActiveForm
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>> mensaje news:42ce5f20$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>> Xevi,
>>>>
>>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>>> activo del Form hijo...
>>>>
>>>> Los eventos normalmente se disparan sólo por la actuación del usuario,
>>>> no tiene mucho sentido que tu provocas una pulsación de teclado.
>>>>
>>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>>
>>>> No tiene mucho sentido. Supongo que estarás llamando al método que
>>>> recoge el evento OnKeyDown del Browse, pero eso no quiere decir que el
>>>> hecho de llamar a dicho evento se vaya a generar ninguna pulsación de
>>>> teclado, en absoluto. Si quieres simular la pulsación de una tecla
>>>> simplemente haz oControl:PostMsg( WM_KEYDOWN, VK_F3).
>>>>
>>>> Como normal general, los eventos se disparan solos por el sistema, el
>>>> usario, etc.
>>>>
>>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>>
>>>> Tienes toda la razón. Se me ha ido completamente la cabeza,
>>>> oActiveControl devuelve el control activo dentro de un Form, y no es el
>>>> caso. Efectivamente no hay forma de conocer el formulario activo. Lo
>>>> arreglaremos cuanto antes, posiblemente poniendo una propiedad
>>>> oActiveForm en Application.
>>>>
>>>> Un saludo,
>>>>
>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>> news:42ce4300$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>> Ignacio,
>>>>>
>>>>> En el Form padre MDI tengo un botón en una ReBar...
>>>>> :AddButton( "", "LUPA",,, "", {|| xBusca(oSender) } )
>>>>> ...
>>>>> La función xBusca, debería de lanzar el Evento KeyDown del Browse
>>>>> activo del Form hijo...
>>>>> Y... según lo que me has comentado...
>>>>>
>>>>> FUNCTION xBusca( oSender )
>>>>> *::oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>>> *::oMDIClient:oActiveControl:Metodo()
>>>>> *oSender:oMDIClient:oActiveControl:DbfBrowse1KeyDown( oSender, VK_F3 )
>>>>> MsgAlert(oSender:oMDIClient:oActiveControl) //Devuelve Nil
>>>>> Return Nil
>>>>>
>>>>> Para modificar una Data o lanzar un Evento del Form que ha llamado al
>>>>> hijo... oParent... PERO
>>>>> Mi problema... No puedo lanzar un Evento, o modificar una Data de un
>>>>> Form hijo...
>>>>>
>>>>> ¿Que hago mal???
>>>>>
>>>>> Un Saludo,
>>>>> Xevi.
>>>>>
>>>>>
>>>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>>>> mensaje news:42cd5ef3$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>> Respondido en otro foro.
>>>>>>
>>>>>> Saludos,
>>>>>>
>>>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>>>> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>>> Hola,
>>>>>>>
>>>>>>> Vamos a ver si me puedo explicar...
>>>>>>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>>>>>>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA
>>>>>>> la
>>>>>>> aplicación... Calculadora...
>>>>>>> Y... un botón que tiene que ejecutar unas acciones dependiendo de
>>>>>>> que
>>>>>>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que
>>>>>>> está en
>>>>>>> su FormChild...
>>>>>>>
>>>>>>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>>>>>>> ¿?¿?¿?
>>>>>>>
>>>>>>>
>>>>>>> Mas o menos sería algo así...
>>>>>>>
>>>>>>> 1.- Padre llama a hijo.
>>>>>>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>>>>>>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>>>>>>
>>>>>>> Pues eso... que no se como hacerlo ...
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Un Saludo,
>>>>>>> Xevi.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Finalmente se me hizo la luz... que estaba mas ciego que cuando me tomo un
par de cubatas !!!
aForms contiene TODA la lista de Forms abiertos... por lo que es mas que
sencillo poder acceder a un Form en concreto, y disparar cualquier evento o
cambiar una Data...
Application:aForms[2]:oDbfBrowse1:PostMsg( WM_KEYDOWN, VK_F3 )
Por lo visto este hilo ha despertado otra propiedad que será util cuando
esté disponible...
oActiveForm...
GRACIAS,
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola,
>
> Vamos a ver si me puedo explicar...
> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
> aplicación... Calculadora...
> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
> FormCHILD tenga activo... en concreto tiene que lanzar un evento que está
> en
> su FormChild...
>
> oFormMenu:BtnOnClick := "oFormChild:Evento"
> ¿?¿?¿?
>
>
> Mas o menos sería algo así...
>
> 1.- Padre llama a hijo.
> 2.- Hijo se visualiza y tiene unas acciones definidas.
> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>
> Pues eso... que no se como hacerlo ...
>
>
>
> Un Saludo,
> Xevi.
>
>
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

No tengo claso Paso de par

Mensaje por joseluis »

Ignacio,
>
> Se guarda en cualquier caso, incluso si es MDIChild
>
Gracias!!
José Luis Capel
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Además, oActiveForm, es justo lo que necesito... para lanzar el evento o
cambiar una Propiedad, pero del FormChild ACTIVO...
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:42ce8f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Finalmente se me hizo la luz... que estaba mas ciego que cuando me tomo un
> par de cubatas !!!
>
> aForms contiene TODA la lista de Forms abiertos... por lo que es mas que
> sencillo poder acceder a un Form en concreto, y disparar cualquier evento
> o cambiar una Data...
>
> Application:aForms[2]:oDbfBrowse1:PostMsg( WM_KEYDOWN, VK_F3 )
>
> Por lo visto este hilo ha despertado otra propiedad que será util cuando
> esté disponible...
> oActiveForm...
>
> GRACIAS,
>
> Un Saludo,
> Xevi.
>
>
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:42cd4f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Hola,
>>
>> Vamos a ver si me puedo explicar...
>> Tengo un Form MDI... en el que tengo un Menu y una ToolBar.
>> Bien, la ToolBar sirve para activar algunas opciones comunes en TODA la
>> aplicación... Calculadora...
>> Y... un botón que tiene que ejecutar unas acciones dependiendo de que
>> FormCHILD tenga activo... en concreto tiene que lanzar un evento que está
>> en
>> su FormChild...
>>
>> oFormMenu:BtnOnClick := "oFormChild:Evento"
>> ¿?¿?¿?
>>
>>
>> Mas o menos sería algo así...
>>
>> 1.- Padre llama a hijo.
>> 2.- Hijo se visualiza y tiene unas acciones definidas.
>> 3.- Se pulsa en padre un botón que ejecuta una acción del Hijo.
>>
>> Pues eso... que no se como hacerlo ...
>>
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

No tengo claso Paso de par

Mensaje por jfgimenez »

Xevi,
> Application:aOpenForms
Como ya te han dicho, ya existe Application:aForms, que contiene TODOS los
formularios que se hayan creado y no se hayan destruido, estén visibles o
no, y sean MDIChild o de cualquier otro tipo.
> Application:oActiveForm
Lo acabamos de añadir. Lo tendrás disponible en la próxima versión.
También hemos hañadido oActiveForm en TMdiClient, de forma que puedes saber
qué MDIChild está activa en un momento dado con ::oMdiClient:oActiveForm.
En el caso de Application:oActiveForm, nunca contendrá formularios MDIChild,
sino que siempre será un formulario de tipo "popup".
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

No tengo claso Paso de par

Mensaje por jfgimenez »

Xevi,
> Como ya te han dicho, ya existe Application:aForms, que contiene TODOS los
> formularios que se hayan creado y no se hayan destruido, estén visibles o
> no, y sean MDIChild o de cualquier otro tipo.
Por cierto, también existe ::oMdiClient:aForms, con lo que puedes saber qué
formularios MDIChild hay creados.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

No tengo claso Paso de par

Mensaje por Xevi »

Gracias por vuestra atención...
Un Saludo,
Xevi.
Pdta.: Espero pronto poder ayudar en los hilos que se vayan abriendo, y no
ser tan "preguntón".
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:42cea387$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>> Como ya te han dicho, ya existe Application:aForms, que contiene TODOS
>> los formularios que se hayan creado y no se hayan destruido, estén
>> visibles o no, y sean MDIChild o de cualquier otro tipo.
>
> Por cierto, también existe ::oMdiClient:aForms, con lo que puedes saber
> qué formularios MDIChild hay creados.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Responder