WINDOW RELEASE

HMG en Español

Moderator: Rathinagiri

User avatar
andyglezl
Posts: 1057
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 24 times
Been thanked: 46 times
Contact:

Re: WINDOW RELEASE

Post by andyglezl » Fri Jun 22, 2018 4:56 pm

Hola Salinetas

Pienso que de eso se trata el foro, no todos podemos estar de acuerdo en todo,
pero comentandolo puede surgir nueva información que nos lleve a nuevas ideas
para mejorarlo o detectar por donde esta el problema.

Una pregunta, probaste el ejemplo que postee ?
( Que fué enfocado a darte una solución, no a seguir la forma en que tu
quieres hacerlo)

Si lo pruebas veras que no genera algún error y así puedes seguir
creando ventana sobre ventana y no debería darte problemas.
(Y a eso es a lo que me refiero cuando hablo de seguir una cierta estructura.)

En tu ejemplo aparece el error "Win_2 already defined" si oprimes por segunda
vez el boton de la primer ventana, y si tecleas algo y oprimes enter en todos los
TEXTBOX que te presenta, al final te genera otro error diferente "Win_2 is not defined"
el cual también habrá que investigar y siguiendo sobre esa base "quizá" surjan nuevos errores.
comentas que encontraste estas funciones: IsControlDefined - ISWINDOWACTIVE
claro que las puedes utilizar y están para eso, pero tu programa ira creciendo más.

Entonces, por deducción (en mi caso) me voy por la parte que funciona y no genera
algún error. ( y en su caso reportar el problema para ver si tiene alguna solución)
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
SALINETAS24
Posts: 229
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 6 times

Post by SALINETAS24 » Sat Jun 23, 2018 11:12 am

Hola de nuevo.., ya está solucionado. :idea:
En honor a la verdad, me puso sobre la pista el amigo MUSTAFA. :lol:

Code: Select all

#include "hmg.ch"  


PROC Main()
   
   DEFINE WINDOW Form_1                ; 
      AT     0,0                       ;
      WIDTH  775                       ;
      HEIGHT 600                       ;
      TITLE  "Window Abiertos"         ;
      MAIN  NOMAXIMIZE   NOSIZE             

      ON KEY ESCAPE ACTION Form_1.Release

      DEFINE TIMER Timer_1 INTERVAL 1000  ACTION (RELEASE MEMORY)

    @ 240,250 LABEL Label_02  WIDTH  350   VALUE "Window Abiertos" FONT "Arial" SIZE 20 BOLD ITALIC
       
		DEFINE BUTTON Web1
			ROW    440
			COL    101
			WIDTH  090  
			HEIGHT 030
			CAPTION SPACE(5)-"Win_01" 
			TOOLTIP ""           
			ACTION  Window_01()
		END BUTTON   
 
		DEFINE BUTTON But_Exit
			ROW    440
			COL    501  
			WIDTH  090  
			HEIGHT 030
			CAPTION SPACE(5)-"&Exit" 
			TOOLTIP "Exit"           
			ACTION Form_1.Release
		END BUTTON   

  END WINDOW
 
   Form_1.Center
   Form_1.Activate 

RETURN

*---------------------------------*
 Function Window_01()
*---------------------------------*
LOCAL aField1, aField2:=""

     DEFINE WINDOW Win_1     ;
            AT 0,0           ;
            WIDTH 500        ;
            HEIGHT 300       ; 
            TITLE "Ventana 1 Child";
            MODAL 
			
        
            ON KEY ESCAPE ACTION Win_1.Release

			@ 100,100 LABEL Label_03  WIDTH  350   VALUE "Window Win_1 Child" FONT "Arial" SIZE 20 BOLD ITALIC 
			@ 120,100 TEXTBOX GET_1 WIDTH 85 VALUE aField1 MAXLENGTH 10 ;
				      ON ENTER Window_02()
					  
            IF !IsWindowDefined( Win_2 ) 
			
				DEFINE WINDOW Win_2   ;
					AT 0,0         ;
					WIDTH  500     ; 
					HEIGHT 300     ;  
					TITLE "Ventana con hide 2 ";
					MODAL
			  
					ON KEY ESCAPE ACTION Win_2.HIDE
		
						@ 100,100 LABEL Label_04  WIDTH  350   VALUE "Window Win_2 Child" FONT "Arial" SIZE 20 BOLD ITALIC
						@ 120,100 TEXTBOX GET_2 WIDTH 85 VALUE aField2 MAXLENGTH 10 ;
							ON ENTER Win_2.hide
					  
						DEFINE BUTTON But_Exit_1
							ROW    200
							COL    301  
							WIDTH  090  
							HEIGHT 030
							CAPTION SPACE(5)-"&Exit" 
							TOOLTIP "Exit"           
							ACTION Win_2.hide
						END BUTTON   
				END WINDOW
			ENDIF
			
     END WINDOW
     
   Win_1.Center
   Win_1.Activate 

Return .T.

*---------------------------------*
 Function Window_02()
*---------------------------------*
		IF !ISWINDOWACTIVE(Win_2)
			CENTER WINDOW Win_2		
			ACTIVATE WINDOW Win_2
		   ELSE
		    Win_2.show
			wIN_2.SETFOCUS		   
		ENDIF

Return .T.


Post Reply