WINDOW - UNA DUDA

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

WINDOW - UNA DUDA

Post by SALINETAS24 »

Hola a todos.
Tengo una duda, una curiosidad..., necesidad de saber ... ;)

Os paso un código, muy simple, extraido del los SAMPLES de HMG.
Tal y como está, si lo compilais y ejecutais, entrar en la opción 1 del menu, os llevará a otra ventana con la sentencia ON RELEASE Refres(), y cuando cerreis la ventana, os dara un error.

Ahora bien.., si cambiamos las linea del error y dejamos activo solo el MSGBOX, funciona de maravilla.

La pregunta... ¿alguien sabe el tipo de WINDOW que utiliza la funcion MSGBOX ..., o es un secreto de bill puertas.., o es que yo defino mal este tipo de ventana....?

Muchas gracias a todos y vamos con una cervecita fresquita....,y ya se que la curiosidad mato al gato :lol:

Code: Select all

#include "hmg.ch"

Function main()

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 200 ;
		TITLE 'Menu Test' ;
		MAIN 

		DEFINE MAIN MENU

			POPUP 'File'

				ITEM 'Open' 		ACTION VEN2()
				ITEM 'Save' 		ACTION MsgInfo ('File:Save') IMAGE 'Free.Bmp'  
				ITEM 'Print' 		ACTION MsgInfo ('File:Print') IMAGE 'Info.Bmp'  
				ITEM 'Save As...' 	ACTION MsgInfo ('File:Save As')
				ITEM 'HMG Version' 	ACTION MsgInfo (HMGVersion())
				SEPARATOR
				ITEM 'Exit' 		ACTION MsgInfo ('File:Exit') IMAGE 'Exit.Bmp'

			END POPUP

			POPUP 'Test' 

				ITEM 'Item 1' 		ACTION MsgInfo ('Item 1')  name xxx
				ITEM 'Item 2' 		ACTION MsgInfo ('Item 2')

				POPUP 'Item 3' name test
					ITEM 'Item 3.1' 		ACTION MsgInfo ('Item 3.1') 
					ITEM 'Item 3.2' 		ACTION MsgInfo ('Item 3.2')

					POPUP 'Item 3.3'
						ITEM 'Item 3.3.1' 		ACTION MsgInfo ('Item 3.3.1')
						ITEM 'Item 3.3.2' 		ACTION MsgInfo ('Item 3.3.2')

						POPUP 'Item 3.3.3' 	

							ITEM 'Item 3.3.3.1' 		ACTION MsgInfo ('Item 3.3.3.1')
							ITEM 'Item 3.3.3.2' 		ACTION MsgInfo ('Item 3.3.3.2')
							ITEM 'Item 3.3.3.3' 		ACTION MsgInfo ('Item 3.3.3.3')
							ITEM 'Item 3.3.3.4' 		ACTION MsgInfo ('Item 3.3.3.4')
							ITEM 'Item 3.3.3.5' 		ACTION MsgInfo ('Item 3.3.3.5')
							ITEM 'Item 3.3.3.6' 		ACTION MsgInfo ('Item 3.3.3.6')  

						END POPUP

						ITEM 'Item 3.3.4' 		ACTION MsgInfo ('Item 3.3.4')

					END POPUP

				END POPUP

				ITEM 'Item 4' 		ACTION MsgInfo ('Item 4')

			END POPUP

			POPUP 'Help'

				ITEM 'About' 		ACTION MsgInfo ('Help:ABout')

			END POPUP

		END MENU

		DEFINE CONTEXT MENU
			ITEM 'Item 1' 		ACTION MsgInfo ('Item 1') 
			ITEM 'Item 2' 		ACTION MsgInfo ('Item 2')
			SEPARATOR
			ITEM 'Item 3' 		ACTION MsgInfo ('Item 3')
		END MENU

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return


Function Ven2()

	DEFINE WINDOW Form_Main ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'Main Window' ;
		MODAL ;
		ON RELEASE Refres()

		@ 200,250 LABEL Label_1 ;
		WIDTH 150 HEIGHT 40 ;
		VALUE 'Click Me !' ;
		FONT 'Arial' SIZE 24  CENTERALIGN ;
		ACTION MsgInfo('Label Clicked!!!')

		@ 10,10 LABEL Label_2 ;
		AUTOSIZE ;
		VALUE '...' ;
		ACTION msginfo('test')

	END WINDOW

	Form_Main.Label_2.Value := 'Hello All, This Is An AutoSIzable Label!!!'

	CENTER WINDOW Form_Main

	ACTIVATE WINDOW Form_Main

Return 

PROCEDURE REFRES()

/*
	MSGBOX("SALIMOS","ATENCION")
*/
	DEFINE WINDOW Form_SALIR ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'Main Window' ;
		MODAL ;
		ON RELEASE Refres()

		@ 200,250 LABEL Label_1 ;
		WIDTH 150 HEIGHT 40 ;
		VALUE "SALIMOS DE REGRESO" ;
		FONT 'Arial' SIZE 24  CENTERALIGN ;
		ACTION MsgInfo('Label Clicked!!!')

		@ 10,10 LABEL Label_2 ;
		AUTOSIZE ;
		VALUE '...' ;
		ACTION msginfo('test')

	END WINDOW

	Form_SALIR.Label_2.Value := 'ESTO ES UNA PRUEBA'

	CENTER WINDOW Form_SALIR

	ACTIVATE WINDOW Form_SALIR
RETURN
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: WINDOW - UNA DUDA

Post by srvet_claudio »

Las cajas de diálogo de Windows son ventanas modales del sistema.
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: WINDOW - UNA DUDA

Post by SALINETAS24 »

Hola Claudio, y gracias.

Pero si son solo Modales .., porque el codigo da error si lo que hace es intentar mostrar una Window modal...?¿
donde esta el fallo.... en la deficion..?

Gracias de nuevo
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: WINDOW - UNA DUDA

Post by srvet_claudio »

SALINETAS24 wrote: Fri Nov 09, 2018 2:47 pm Hola Claudio, y gracias.

Pero si son solo Modales .., porque el codigo da error si lo que hace es intentar mostrar una Window modal...?¿
donde esta el fallo.... en la deficion..?

Gracias de nuevo
Excepto por los MessageBox, HMG no utiliza ventanas modales del sistema. Para crear una ventana "Modal" lo que hace HMG es crear una ventana normal y luego inactivar las demas ventanas de la aplicación dando la impresión que la ventana es una ventana modal del sistema.
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: WINDOW - UNA DUDA

Post by SALINETAS24 »

Ok, ahora está más claro. Muchas gracias!!
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: WINDOW - UNA DUDA

Post by SALINETAS24 »

srvet_claudio wrote: Fri Nov 09, 2018 3:24 pm
Excepto por los MessageBox, HMG no utiliza ventanas modales del sistema. Para crear una ventana "Modal" lo que hace HMG es crear una ventana normal y luego inactivar las demas ventanas de la aplicación dando la impresión que la ventana es una ventana modal del sistema.
Hola Claudio..,¿ hay alguna forma de que podamos crear una ventana de sistema, a modo de los MESSAGEBOX ?

Es por el tema de recursividad en el LOSTFOCUS, he detectado que si la ventana es un MSGBOX detiene esos errores y se pueden displayar mensajes.., pero yo necesito mostrar un grid.
Gracias
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: WINDOW - UNA DUDA

Post by mustafa »

Hola Nanu !!! Com estas ?

View ---> http://www.hmgforum.com/viewtopic.php?f ... ISK#p29718

Haber si te puede servir esta alternativa ?

Code: Select all

#include "hmg.ch"
#define MB_ICONASTERISK 64
#define MB_ICONEXCLAMATION 0x30
#define MB_ICONWARNING 0x30
#define MB_ICONERROR 16
#define MB_ICONHAND 16
#define MB_ICONQUESTION 32

Function Main
  
  REQUEST DBFCDX , DBFFPT , DBFDBT
  RDDSETDEFAULT( "DBFCDX" )

  SET CODEPAGE TO SPANISH 
  SET DELETE ON
  SET CENTURY ON
  SET DATE FRENCH
  SET DATE FORMAT TO "dd/mm/yyyy"
  SET ESCAPE ON

  CLOSE DATABASES   

 IF !FILE("meses.dbf")
     NoEstaDBF()
 ENDIF
    SELECT 1 
    USE meses

 PRIVATE numerop := ALLTRIM( STR(meses->ULTIMO_REC) ) 
 PRIVATE CRLFp   := ( CHR(10) + CHR(13) )
 PRIVATE cTextp  :=  CRLFp + SPACE(3) + "Factura Nº "+ numerop + CRLFp + CRLFp ;
                        + SPACE(3) + "Factura_"+ ALLTRIM( numerop )+".txt" , ;
                          cTitlep := "End Print Factura"          
 wapi_MessageBox( wapi_GetActiveWindow(), cTextp, cTitlep, MB_ICONASTERISK )     //<-  pon el icon que quieras ?  sample  MB_ICONHAND 

 CLOSE DATABASES   

RETURN NIL

*----------------------------------------------------*
FUNCTION NoEstaDBF()
*----------------------------------------------------*
local aStru := { {"ULTIMO_REC"   ,"N" , 5,0 },;
                 {"FECHA_FACT"   ,"C", 10,0 },;
                 {"HORA"         ,"C",  8,0 } };

         REQUEST DBFCDX

         dbCreate( "meses.dbf", aStru, "DBFCDX", .T. )

  CLOSE DATABASES
  USE meses NEW
  dbAppend()
  REPLACE ULTIMO_REC WITH 45681
  REPLACE FECHA_FACT WITH DTOC(DATE())
  REPLACE HORA       WITH TIME()

  CLOSE DATABASES
             
RETURN NIL
Una abraçada
Mustafa :idea:
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: WINDOW - UNA DUDA

Post by SALINETAS24 »

Yeep..., bona tarda senyoret!!.

Gracias Mustafa por la aportación. Desconocía la wapi_MESSAGEBOX.
Ya he resuelto el problema... el tema de no poder hacer más de lostfocus seguidos, abriendo un ventana.., con la perdida de focus, recursividad, etc....
He colgado la ultima revisión en :

http://www.hmgforum.com/viewtopic.php?f ... 2&start=10

Un abrazo..., y una serveseta frequeta!!
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
Post Reply