Página 1 de 1

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 10:02 am
por PILO
Hola en un boton o menu, co
Cuando esta un formulario abierto, quiero posicionarme en el,
y sino esta crearle
mi boton es el siguiente:
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
TFexplota():New( Self ):Show() // se abre en mdichild
RETURN Nil
lo que necesito ayuda es la siguiente
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
if "el formuliario exite" .and. "esta abierto"
me posiciono en el ( )
else
creo formulario ( TFexplota():New( Self ):Show() )
end if
RETURN Nil
No tengo mucha idea y con los ejemplos estoy aprendiendo, ya que soy
novato en la clasess y no entiendo la documentación cuando habla de las
opciones
Gracias de antemano

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 12:23 pm
por jfgimenez
PILO,
Lo más sencillo es crear una data en la clase que almacene dicho formulario,
y comprobar su existencia cuando lo necesites. Podría ser algo así:
CLASS TMenusrmpilo FROM TForm
...
DATA FExplota
...
ENDCLASS
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
IF ::FExplota == Nil
::FExplota := TFexplota():New( Self )
::FExplota:OnClose := {|| ::FExplota := Nil } // Poner a Nil cuando
se cierre
ENDIF
::FExplota:Show()
RETURN Nil
--
Un saludo,
José F. Giménez
http://www.xailer.com

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 12:45 pm
por PILO
Lo probare, ya que soy un gran novato segun veo, te dare la respuesta o te
preguntare mas,
ha la DATA que son variables publicas, privadas o locales
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=45448f2c@news.xailer.com...]45448f2c@news.xailer.com...[/email]
> PILO,
>
> Lo más sencillo es crear una data en la clase que almacene dicho
> formulario, y comprobar su existencia cuando lo necesites. Podría ser algo
> así:
>
> CLASS TMenusrmpilo FROM TForm
> ...
> DATA FExplota
> ...
> ENDCLASS
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> IF ::FExplota == Nil
> ::FExplota := TFexplota():New( Self )
> ::FExplota:OnClose := {|| ::FExplota := Nil } // Poner a Nil
> cuando se cierre
> ENDIF
> ::FExplota:Show()
>
> RETURN Nil
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 1:05 pm
por jfgimenez
PILO,
> ha la DATA que son variables publicas, privadas o locales
las DATAs son como variables que pertenecen directamente al objeto
correspondiente, por lo tanto, para usarlas tienes que poner siempre:
objeto:data
o desde algún método de la propia clase:
::data
Por ahora no entraremos en detalle sobre su ámbito u otras características,
que lejos de aclararte nada van a confundirte.
--
Un saludo,
José F. Giménez
http://www.xailer.com

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 1:57 pm
por PILO

"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:[email=45448f2c@news.xailer.com...]45448f2c@news.xailer.com...[/email]
> PILO,
>
> Lo más sencillo es crear una data en la clase que almacene dicho formulario,
> y comprobar su existencia cuando lo necesites. Podrí­a ser algo así­:
>
> CLASS TMenusrmpilo FROM TForm
> ...
> DATA FExplota
> ...
> ENDCLASS
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> IF ::FExplota == Nil
> ::FExplota := TFexplota():New( Self )
> ::FExplota:OnClose := {|| ::FExplota := Nil } // Poner a Nil cuando
> se cierre
> ENDIF
> ::FExplota:Show()
lo que necesito aquí­ es que se ponga en primer lugar de la pantalla y se active dicho form
>
> RETURN Nil
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
--

Comprobar si un formulario esta abierto

Publicado: Dom Oct 29, 2006 7:09 pm
por jfgimenez
PILO,
lo que necesito aquí­ es que se ponga en primer lugar de la pantalla y se active dicho form
Tratándose de un formulario MDIChild (al menos eso he entendido por tu primer mensaje) con eso deberí­a bastar. Al llamar a Show() se deberí­a mostrar (en caso de no estar visible) y pasar a primer plano.
--
Un saludo,
José F. Giménez
http://www.xailer.com
--

Comprobar si un formulario esta abierto

Publicado: Lun Oct 30, 2006 9:02 am
por PILO
Tratándose de un formulario MDIChild (al menos eso he entendido por tu primer mensaje) con eso deberí­a bastar. Al llamar a Show() se deberí­a mostrar (en caso de no estar visible) y pasar a primer plano.
Lo Uso como normal en estos momentos
--

Comprobar si un formulario esta abierto

Publicado: Lun Oct 30, 2006 7:04 pm
por jfgimenez
PILO,
Tratándose de un formulario MDIChild (al menos eso he entendido por tu primer mensaje) con eso deberí­a bastar. Al llamar a Show() se deberí­a mostrar (en caso de no estar visible) y pasar a primer plano.
Lo Uso como normal en estos momentos
Entonces utiliza :SetFocus() en vez de :Show()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--

Comprobar si un formulario esta abierto

Publicado: Lun Oct 30, 2006 9:34 pm
por zeasoftware
Yo uso esta funcion y me da buenos resultados:
Declaras en tu Form principal:
Data aForms Init {,,,,,,,,}
:::::
Function Launch( Self, nForm, oForm )
IF !( ::aForms[nForm] == nil )
::aForms[nForm]:SetFocus()
ELSE
::aForms[nForm] := oForm:New( Self )
::aForms[nForm]:OnClose := {|| ::aForms[nForm] := Nil }
ENDIF
::aForms[nForm]:Show()
RETURN Nil
lo llamas:
:::
#define ID_CONCEPTOS 4
#define ID_LINEAS 5
::::
MENUITEM "&Conceptos" ACTION Launch(self, ID_CONCEPTOS, TConceptos())
MENUITEM "&Lineas" ACTION Launch(self, ID_LINEAS, TLineas())

Igual manera con los Botones y comprueba si la TForm ya esta abierta o no.
Espero te Sirva
Saludos.
--
Ramon Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
"PILO" <srmpilo@hotmail.com> escribió en el mensaje news:[email=45446e1f@news.xailer.com...]45446e1f@news.xailer.com...[/email]
> Hola en un boton o menu, co
> Cuando esta un formulario abierto, quiero posicionarme en el,
> y sino esta crearle
> mi boton es el siguiente:
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> TFexplota():New( Self ):Show() // se abre en mdichild
>
> RETURN Nil
> lo que necesito ayuda es la siguiente
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
> if "el formuliario exite" .and. "esta abierto"
> me posiciono en el ( )
> else
> creo formulario ( TFexplota():New( Self ):Show() )
> end if
>
> RETURN Nil
> No tengo mucha idea y con los ejemplos estoy aprendiendo, ya que soy
> novato en la clasess y no entiendo la documentación cuando habla de las
> opciones
> Gracias de antemano
>
>
--

Comprobar si un formulario esta abierto

Publicado: Lun Oct 30, 2006 11:02 pm
por PILO
Gracias
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:[email=45463ebc@news.xailer.com...]45463ebc@news.xailer.com...[/email]
PILO,
Tratándose de un formulario MDIChild (al menos eso he entendido por tu primer mensaje) con eso deberí­a bastar. Al llamar a Show() se deberí­a mostrar (en caso de no estar visible) y pasar a primer plano.
Lo Uso como normal en estos momentos
Entonces utiliza :SetFocus() en vez de :Show()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--

Comprobar si un formulario esta abierto

Publicado: Lun Oct 30, 2006 11:03 pm
por PILO
Gracias ramon
"ramonzea" <zeasoftware@hotmail.com> escribió en el mensaje news:[email=454661c7@news.xailer.com...]454661c7@news.xailer.com...[/email]
Yo uso esta funcion y me da buenos resultados:
Declaras en tu Form principal:
Data aForms Init {,,,,,,,,}
:::::
Function Launch( Self, nForm, oForm )
IF !( ::aForms[nForm] == nil )
::aForms[nForm]:SetFocus()
ELSE
::aForms[nForm] := oForm:New( Self )
::aForms[nForm]:OnClose := {|| ::aForms[nForm] := Nil }
ENDIF
::aForms[nForm]:Show()
RETURN Nil
lo llamas:
:::
#define ID_CONCEPTOS 4
#define ID_LINEAS 5
::::
MENUITEM "&Conceptos" ACTION Launch(self, ID_CONCEPTOS, TConceptos())
MENUITEM "&Lineas" ACTION Launch(self, ID_LINEAS, TLineas())

Igual manera con los Botones y comprueba si la TForm ya esta abierta o no.
Espero te Sirva
Saludos.
--
Ramon Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
"PILO" <srmpilo@hotmail.com> escribió en el mensaje news:[email=45446e1f@news.xailer.com...]45446e1f@news.xailer.com...[/email]
> Hola en un boton o menu, co
> Cuando esta un formulario abierto, quiero posicionarme en el,
> y sino esta crearle
> mi boton es el siguiente:
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> TFexplota():New( Self ):Show() // se abre en mdichild
>
> RETURN Nil
> lo que necesito ayuda es la siguiente
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
> if "el formuliario exite" .and. "esta abierto"
> me posiciono en el ( )
> else
> creo formulario ( TFexplota():New( Self ):Show() )
> end if
>
> RETURN Nil
> No tengo mucha idea y con los ejemplos estoy aprendiendo, ya que soy
> novato en la clasess y no entiendo la documentación cuando habla de las
> opciones
> Gracias de antemano
>
>
--

Comprobar si un formulario esta abierto

Publicado: Mar Oct 31, 2006 8:16 am
por Xevi
PILO,
Creo que lo mas sencillo que he encontrado en MDI, es utilizar la propiedad
CARGO del MDICHILD.
Así si le pones a tu MDICHILD cargo = EXPLOTA, creas una función FExplota
que será la que controlará SI ya está abierto el Form.
PROCEDURE FExplota(oSender)
local nAscan
For nAscan := 1 to Len( Application:aForms )
If Application:aForms[nAScan]:Cargo == "EXPLOTA"
Application:aForms[nAScan]:SetFocus()
Return
EndIf
Next
TFExplota():New():Show()
Return
Un Saludo,
Xevi.
"PILO" <srmpilo@hotmail.com> ha escrit al missatge del grup de discussió:
[email=45446e1f@news.xailer.com...]45446e1f@news.xailer.com...[/email]
> Hola en un boton o menu, co
> Cuando esta un formulario abierto, quiero posicionarme en el,
> y sino esta crearle
> mi boton es el siguiente:
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> TFexplota():New( Self ):Show() // se abre en mdichild
>
> RETURN Nil
> lo que necesito ayuda es la siguiente
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
> if "el formuliario exite" .and. "esta abierto"
> me posiciono en el ( )
> else
> creo formulario ( TFexplota():New( Self ):Show() )
> end if
>
> RETURN Nil
> No tengo mucha idea y con los ejemplos estoy aprendiendo, ya que soy
> novato en la clasess y no entiendo la documentación cuando habla de las
> opciones
> Gracias de antemano
>

Comprobar si un formulario esta abierto

Publicado: Mar Oct 31, 2006 7:16 pm
por miguel
Hola, yo utilizo esto.... en el evento onClick de cualquier control
:OnClick := {|o| ::AbrirVentana( TForm1() ) }
METHOD AbrirVentana( oClase ) CLASS Principal
Local aForms := ::oMDIClient:aForms
Local nO := aScan( aForms , {|o|o:ClassName() == oClase:ClassName()} )
if nO == 0
oClase:new(self):show()
else
aForms[nO]:Restore()
aForms[nO]:setfocus()
end
RETURN nil
Saludos. Miguel A. Torrrellas
PILO escribió:
> Hola en un boton o menu, co
> Cuando esta un formulario abierto, quiero posicionarme en el,
> y sino esta crearle
> mi boton es el siguiente:
>
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
>
> TFexplota():New( Self ):Show() // se abre en mdichild
>
> RETURN Nil
> lo que necesito ayuda es la siguiente
> METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS Tmenusrmpilo
> if "el formuliario exite" .and. "esta abierto"
> me posiciono en el ( )
> else
> creo formulario ( TFexplota():New( Self ):Show() )
> end if
>
> RETURN Nil
> No tengo mucha idea y con los ejemplos estoy aprendiendo, ya que soy
> novato en la clasess y no entiendo la documentación cuando habla de las
> opciones
> Gracias de antemano
>
>