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
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.
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.
Se muestran sin problemas
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...?
Lo que sería una mezcla de las propiedades de las dos ventanas....
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
or just
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. ????
¿ESTAMOS ANTE UN ERROR EN EL TREE, o SE TIENE QUE UTILIZAR OTRO COMANDO QUE NO SEA DoMethod..??
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