Como evitar abrir 2 veces la misma ventana child

Como evitar abrir 2 veces la misma ventana child

Postby jose_murugosa » Tue Nov 28, 2023 2:58 pm

Buenas tardes, queridos amigos del foro.
Tengo una consulta:

Tengo una ventana mdi con menú.
Por medio del menú abro diferentes ventanas child que hacen cosas diferentes.
¿Cómo puedo hacer para que cuando selecciono del menú una opción elegida previamente en lugar de abrir una nueva ventana child con lo mismo, ponga foco en la ventana correspondiente que ya está abierta?
¿Es posible hacer esto?

Gracias desde ya por vuestra atención. :D
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como evitar abrir 2 veces la misma ventana child

Postby sysctrl2 » Tue Nov 28, 2023 5:00 pm

a ver si es lo que buscas
saludos
viewtopic.php?f=6&t=37823&hilit=oWnd+%3D+NIL
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1022
Joined: Mon Feb 05, 2007 7:15 pm

Re: Como evitar abrir 2 veces la misma ventana child

Postby jvtecheto » Tue Nov 28, 2023 7:36 pm

Hola Jose.

Yo lo que hago es que desabilito las opciones que abren la ventana, como normalmente lo tenemos en un menu y en un
boton de una barra.
En la funcion que llamo a la ventana hija ejemplo
Code: Select all  Expand view  RUN

ObrasBrw( oMenuObr, oObra )
 

las variables son estaticas y las tengo en el prg. principal
entonces dentro de la funcion las desabilito.

Code: Select all  Expand view  RUN

oMenuObr:Disable()
oObra:Disable()
 

y compruebo que quedaran activas cuando cerrare la ventana ...
Code: Select all  Expand view  RUN

ACTIVATE WINDOW OWndObr VALID ( oMenuObr:Enable(), oObra:Enable()....)
 


A mi me funciona bien.

Saludos.

Jose.
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
User avatar
jvtecheto
 
Posts: 600
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Como evitar abrir 2 veces la misma ventana child

Postby Willi Quintana » Tue Nov 28, 2023 10:33 pm

Mi estimado,,,
Antes de abrir la ventana declara un variable static. espero que captes la idea
Code: Select all  Expand view  RUN

static nNumWin := 0

lSalir := .f.

If nNumWin > 0
   Return(Nil)
EndIf
DEFINE WINDOW oWndM MDI  ...............
           REDEFINE BTNBMP. oSalir ,,,,,,,,,,,,,, ACTION (lSalir := .t., oWndM:End())
ACTIVATE WINDOW ON INIT (nNumWin++) VALID lSalir
If lSalir
  nNUmWin := 0
EndIf
Return(NIl)
 
User avatar
Willi Quintana
 
Posts: 1021
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Como evitar abrir 2 veces la misma ventana child

Postby nageswaragunupudi » Wed Nov 29, 2023 12:47 pm

Sample:
Code: Select all  Expand view  RUN
#include "fivewin.ch"

function Main()

   local oWnd, oBar

   DEFINE WINDOW oWnd MDI
   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007
   DEFINE BUTTON OF oBar PROMPT "Child-1" CENTER ACTION Child1()
   DEFINE BUTTON OF oBar PROMPT "Child-2" CENTER ACTION Child2()
   ACTIVATE WINDOW oWnd

return nil

function Child1()

   static oWnd

   if oWnd != nil
      oWnd:Activate()
      return nil
   endif

   DEFINE WINDOW oWnd MDICHILD OF WndMain() TITLE "CHILD-1"
   oWnd:SetColor( 0, CLR_WHITE )
   oWnd:bPainted := { || oWnd:SayText( "CHILD WINDOW-1" ) }
   oWnd:bPostEnd := { || oWnd := nil }
   ACTIVATE WINDOW oWnd

return nil

function Child2()

   static oWnd

   if oWnd != nil
      oWnd:Activate()
      return nil
   endif

   DEFINE WINDOW oWnd MDICHILD OF WndMain() TITLE "CHILD-2"
   oWnd:SetColor( 0, CLR_WHITE )
   oWnd:bPainted := { || oWnd:SayText( "CHILD WINDOW-2" ) }
   oWnd:bPostEnd := { || oWnd := nil }
   ACTIVATE WINDOW oWnd

return nil
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Como evitar abrir 2 veces la misma ventana child

Postby jose_murugosa » Wed Nov 29, 2023 4:49 pm

Muchisimas gracias a todos por sus sugerencias y soluciones.
He logrado el objetivo gracias a Uds.
Es hermoso contar con este foro de amigos que tanto tiempo dedican a ayudarnos.
Muchiiiiiisiiiiimmmmmaaaaaas GRACIAS!!!! :D
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests