Page 1 of 1

WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Mon Dec 23, 2019 9:19 pm
by SALINETAS24
Hola, estoy haciendo una pruebas con los tipos de ventana y encuentro extraños funcionamientos.

CAMBIO DE PANTALLA CON UN CLICK DEL RATON
  • CHILD y TOPMOST
Cuando se activan siempre están en primer plano, aunque se haga CLICK en la pantalla de bajo no se cambian, hay que forzar y minimizarla.
  • WINDONW STANDARD
Este formato de ventana si que permite el intercambio con un CLICK de ratón sobre cualquier otra ventana.

RESTAURAR PANTALLA

Otra cosa rara, cuando la pantalla esta minimizada y quiero volver a mostrarla utilizo el siguiente código

Code: Select all

		DoMethod( "Window_Name", "setfocus")
		DoMethod( "Window_Name", "restore")
Pues también tenemos corportamientos diferentes.
  • TOPMOST
    CHILD
Se muestran sin problemas
  • WINDONW STANDARD
Hace un pantallazo y desaparece.....

La pregunta..,
¿Hay alguna forma de tener una ventana que se comporte como la STANDARD WINDOW con el ratón (cambiando el foco) y a la vez que pueda restaurarse como las CHILD o la TOPMOST...? :geek:

Lo que sería una mezcla de las propiedades de las dos ventanas.... :?: :!: :P


Salud amigos y vamos con una cervecita!! ;)

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Mon Dec 23, 2019 10:20 pm
by SALINETAS24
La cuestión definitiva seria.., ¿como puedo restaurar una WINDOWTYPE STANDARD que ha sido minimizada..?
NO FUNCIONA

DoMethod( "Window_Name", "setfocus")
DoMethod( "Window_Name", "restore")

¿ Es un Bug o acaso se deben resturar desde otro comando..?

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Tue Dec 24, 2019 7:01 am
by AUGE_OHR
hi,

have you try

Code: Select all

ShowWindow(oWin:Hwnd,SW_NORMAL)
or just

Code: Select all

oWin:Normal()
have a nice XMas

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Wed Dec 25, 2019 7:36 pm
by SALINETAS24
Hola a todos.

Os adjunto un pequeño código para que podáis comprobar el ERROR - BUG , que tenemos con el RESTORE WINDOW STANDARD cuando se hace desde un menú tipo TREE.
El programa tiene dos menús con dos opciones (son las mismas).
Cuando elijas una de ellas se te mostrará la pantalla, o bien la Child o bien la Standard. Debes minimizala y volver a repetir la opción. En el caso de la ventana CHILD se te mostrará desde el MAIN MENU como desde el TREE MENU.
Verás que la opción de menú desde el MAIN MENU funciona correctamente con ambas ventanas.
Sin embargo desde el menú TREE no se consigue cambiar el FOCUS cuando la WINDOW es STANDARD. ???? :oops:
¿ESTAMOS ANTE UN ERROR EN EL TREE, o SE TIENE QUE UTILIZAR OTRO COMANDO QUE NO SEA DoMethod..?? :geek:

Code: Select all

// -------------------------------------------------
// -


#include "hmg.ch"

FUNCTION Main() 

    DEFINE WINDOW Win_1                  ;
		AT 0,0                          ;
		WIDTH 630 HEIGHT 420            ;  
		TITLE "DEMOSTRACION DE MSG_Box"                ;
        MAIN     
		
		DEFINE MAIN MENU 
			DEFINE POPUP '&File'
				ITEM 'Crea pantalla STANDARD WINDOW' ACTION CreaWinStandard()
				ITEM 'Crea pantalla CHILD    WINDOW' ACTION CreaWinChild()
			END POPUP
		END MENU
		
		DEFINE TREE Tree_1 AT 65,10 WIDTH 210 HEIGHT 160  ITEMIDS ;
			ON DBLCLICK Ejecuta()
			NODE 'General' ID 0
					TREEITEM 'PANTALLA STANDARD' 	ID 1
					TREEITEM 'PANTALLA CHILD' 	    ID 2
			END NODE
		END TREE
		

	END WINDOW

	Center Window  Win_1
	Activate Window  Win_1

RETURN

PROCEDURE EJecuta()
LOCAL nOpc:=Win_1.Tree_1.Value
	DO CASE
		CASE nOpc=1 
			CreaWinStandard()
		CASE nOpc=2
			CreaWinChild()
	ENDCASE
RETURN

RETURN


// ----------------------------------------------------
// --> ESTO SERIA UNA OPCION DEL MENU - STANDARD WINDOW
// --------------------------------------------------


PROCEDURE CreaWinStandard()
	IF IsWindowDefined ( ST_Win )
		DoMethod  ("ST_Win", "restore")
		DoMethod  ("ST_Win", "SetFocus")
	ELSE
		_CreaWinStandard()
	ENDIF
RETURN

PROCEDURE _CreaWinStandard()
	DEFINE WINDOW ST_Win		;
		AT 15,15			;
		WIDTH 300				;
		HEIGHT 190				;
		TITLE "Demo STANDARD WINDOW - MINIMICE" ;
		BACKCOLOR BLUE	
		


        @ 112,090 BUTTON Mus_1     ;    
                CAPTION "NO HACE NADA. POR FAVOR MINIMICE"  ;
				WIDTH  200          ;
				HEIGHT 028          ;
                FONT "ARIAL" SIZE 9 BOLD 	
	END WINDOW
	CENTER WINDOW ST_Win
	ACTIVATE WINDOW ST_Win
Return 




// ----------------------------------------------------
// --> ESTO SERIA UNA OPCION DEL MENU - CHILD WINDOW
// --------------------------------------------------
PROCEDURE CreaWinChild()
	IF IsWindowDefined ( Ch_Win )
		DoMethod  ("Ch_Win", "restore")
		DoMethod  ("Ch_Win", "SetFocus")
	ELSE
		_CreaWinChild()
	ENDIF
RETURN

PROCEDURE _CreaWinChild()
	DEFINE WINDOW Ch_Win		;
		AT 15,15			;
		WIDTH 300				;
		HEIGHT 190				;
		TITLE "Demo CHILD - MINIMICE" ;
		CHILD ;
		BACKCOLOR GREEN		


        @ 112,090 BUTTON Mus_1     ;    
                CAPTION "NO HACE NADA. POR FAVOR MINIMICE"  ;
				WIDTH  200          ;
				HEIGHT 028          ;
                FONT "ARIAL" SIZE 9 BOLD 	
				
	END WINDOW
	CENTER WINDOW Ch_Win
	ACTIVATE WINDOW Ch_Win
Return 
Gracias a todos por leerme en estos dias.., y vamos con una copita de Marina Espumante de Bocopa y un mazapán.

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Sun Feb 02, 2020 6:55 pm
by Red2
Hi Jimmy,

In your (Dec 24, 2019 7:01 am) post you offered the line of code:
ShowWindow(oWin:Hwnd,SW_NORMAL)
Question: In HMG what function or code returns the window object, oWin?

Thank you for all of your kind help!

Regards, Red2

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Sun Feb 02, 2020 8:58 pm
by AUGE_OHR
hi,
Red2 wrote: Sun Feb 02, 2020 6:55 pm
ShowWindow(oWin:Hwnd,SW_NORMAL)
Question: In HMG what function or code returns the window object, oWin?
oh, sorry it use OOP Syntax

in HMG you can write

Code: Select all

   nHwnd := GetformHandle( cForm )   // cForm = "Win_1"
   ShowWindow(nHwnd,SW_NORMAL)

Re: WINDOWTYPE STANDARD - CHILD - TOPMOST

Posted: Sun Feb 02, 2020 9:33 pm
by Red2
Thank you!

Red2