WINDOW - REDIBUJAR TODOS LOS CONTROLES

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 230
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 5 times
Been thanked: 6 times

WINDOW - REDIBUJAR TODOS LOS CONTROLES

Post by SALINETAS24 » Sat Oct 06, 2018 10:43 pm

Hola, hay alguna forma de que una ventana redibuje todos los LABEL, TEXTLABEL, ETC., ETC.. todos de una sola tadaca..
Gracias.

User avatar
mustafa
Posts: 721
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 90 times

Post by mustafa » Sun Oct 07, 2018 12:00 pm

Hola Nanu !
Mira haber si te puede servir esto ?

c:\hmg.3.4.4\Samples\Controls\MenuContext\MENU_ControlContext_1
c:\hmg.3.4.4\Samples\Controls\DATA_BOUND\

Una Abraça
Mustafa

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

Post by SALINETAS24 » Sun Oct 07, 2018 7:03 pm

Hola Mustafa.., gracies per contestar, eres una máquina!!
Quizás mi petición fue algo abstracta. Verás.., donde tengo el bloqueo es en el MENU de la CONTABILIDAD. En esta aplicación (la primera que estoy recreando de mi antiguo CLIPPER), el usuario puede elegir el IDIOMA. Cuando arranca el PROGRAMA lee en un fichero de MISCELANEA el idioma que el usuario tiene predefinido. Con el 1-Castellano, 2-Valençia,3-Inglés (de Google), 4- Francés (de Google también). Se carga una variable (tipo array unidimensional) con el idioma y se visualiza sin ningún problema. Pero si decidimos cambiar de idioma, (a través de una opción del MENU), puedo modificar todos los TÍTULOS menos los DEFINE POPUP y los MENUITEM del MENU. No he encontrado una clausula Refresh para MENU ni para la WINDOW. Para que el cambio surta efecto el usuario tiene que salir del PROGRAMA y volver a entrar.

El código es muy simple, como te he dicho es una variable tipo array donde cargo el idioma. La condición la tengo solo por control.
Es asi..

Code: Select all


		DEFINE MAIN MENU 
			DEFINE POPUP IF(nIdioma=1,'&FICHEROS',aMnx[1])
				MENUITEM IF(nIdioma=1,"  &0.Empresas","  &0."+aMnx[7]) 	ACTION (_CONMAEM(nYear,cDir,aConfig), Activa_xEmp(nYear,@xEmp,cDir,aConfig));
												IMAGE "EMPRESA_P" TOOLTIP "Datos generales de la empresa" 
				MENUITEM IF(nIdioma=1,"  &1.Conceptos"," &1."+aMnx[8])		IMAGE "notas_p" ACTION  _CONMACO(xEmp,aConfig)  TOOLTIP "Crea los Conceptos Contables"
				MENUITEM IF(nIdioma=1,"  &2.Plan Contable","  &2."+aMnx[9])	IMAGE "cuenta_p" ACTION _CONMACU(xEmp,aConfig) TOOLTIP "Crea las cuentas del Plan Contable"
				MENUITEM IF(nIdioma=1,"  &3.Asientos","  &3."+aMnx[10])		IMAGE "editar_p" ACTION _CONMAAS(xEmp, nYear, aConfig)  TOOLTIP "Crea los apuntes contables"
				SEPARATOR

Pdría displayar la opción directamente, sin condición

Code: Select all


		DEFINE MAIN MENU 
			DEFINE POPUP aMnx[1]
				MENUITEM aMnx[7] 	ACTION (_CONMAEM(nYear,cDir,aConfig), Activa_xEmp(nYear,@xEmp,cDir,aConfig));
												IMAGE "EMPRESA_P" TOOLTIP "Datos generales de la empresa" 
				MENUITEM aMnx[8]		IMAGE "notas_p" ACTION  _CONMACO(xEmp,aConfig)  TOOLTIP "Crea los Conceptos Contables"
				MENUITEM aMnx[9]	IMAGE "cuenta_p" ACTION _CONMACU(xEmp,aConfig) TOOLTIP "Crea las cuentas del Plan Contable"
				MENUITEM aMnx[10]		IMAGE "editar_p" ACTION _CONMAAS(xEmp, nYear, aConfig)  TOOLTIP "Crea los apuntes contables"
				SEPARATOR

Mientras estoy escribiendo esto, estoy pensando que una buen solución sería hacer un RELEASE y volver a definir el MENU.......
Creo que ya hicimos algo parecido con las multiventanas.., lo probaré a nos ser que tengamos alguna otra opción.., ya te contaré.

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

Post by SALINETAS24 » Sun Oct 07, 2018 8:06 pm

Hola amic, ya he estado probando y he visto una cosa muy rara que no termino de entender.
Imagínate un programa.., defino unas variables.., realizo unos cálculos.., PRESENTO LA WINDOW MAIN.., el usuario introduce una serie de datos, hago el release...., pero tengo que seguir con el programa..., necesito realizar unos cálculos. PUES NO.., en cuanto hago el RELEASE me cierra el PRG y me devuelve al sistema.
Acaso la ventana MAIN toma el control absoluto y cuando la cierras .., se acabo. Una vez activada la MAIN ya no se puede desactivar..??

Tal y como te comente antes, había pensado en hacerle un RELEASE a la MAIN para redefirnirla después pero no me deja.... Sigo con las pruebas.
Salud i una serveseta fresqueta amic!!!

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

Post by SALINETAS24 » Sun Oct 07, 2018 9:41 pm

Hola otra vez. Tal y como he comentado antes, cuando cerramos una WINDOW de tipo MAIN, en las fuentes de HMG hay un .PRG llamado "h_Windows.prg" que se encarga de gestionar las ventanas y demás controles. Pues ahí se ejecuta la función ExitProcess(0) dentro del procedimiento ReleaseAllWindows (). Esa es la que hace terminar el programa, si la eliminamos (poniéndole un "*" delante), conseguimos que cuando cerremos la WINDOW MAIN no nos tire al sistema y podamos seguir con el programa.
He conseguido quedarme dentro del programa, pero si intento cargar otra vez la WINDOW MAIN, me dice "-ACTIVATE WINDOW: Main Window Already Active. Program Terminated". No consigo eliminarla, hacerle un RELEASE COMPLETO, al igual que se hace en una ventana tipo MODAL.
Si se pudiese hacer sería una buena forma de hacer un REFRESH a toda un WINDOW MAIN.
Quizás alguien que domine mejor esta libreria y el "c" me pueda orientar.

Muchas gracias a todos y unas cervecitas fresquitas!!

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

Post by SALINETAS24 » Mon Oct 08, 2018 10:13 am

Che, Mustafa.., estic mes tonto que una carabasa.., recontracollons. Tens tota la rao., tenia els eixamples i no els veia. Moltes gracias com sempre amic.

No obstante sería interesante que los creadores de HMG valorasen la posiblidad de que una RELEASE sobre la WINDOW MAIN no cerrase de manera obligatoria el PROGRAMA, estaría bien que se eliminasen los controles (al igual que se hace en una modal) y que se pudiese seguir trabajando.

Un abrazo.

User avatar
mustafa
Posts: 721
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 90 times

Post by mustafa » Mon Oct 08, 2018 2:34 pm

Hola amigo
Rebuscando por la Web he encontrado un trabajo magnifico del Dr.Soto Puzzle_ML , que tiene un menú automático
de cambio de idioma Originalmente viene en Español, Ingles y Portugues

http://www.hmgforum.com/viewtopic.php?f ... menu#p8877

He borrado unas cuantas lineas del código haber si se podía conseguir lo del tema Menú Idiomas y parece que funciona
A lo mejor te puede Servir ? lo malo es que hay que configurar todos los menús en los Idiomas que tengamos que trabajar
El Código de página para el Valenciano le he puesto el de Francés por compatible con los acentos.
Ya me contaras ? Salud !
Mustafa
Attachments
Sample.zip
(4.13 KiB) Downloaded 31 times

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

Post by SALINETAS24 » Mon Oct 08, 2018 6:11 pm

Muchas gracias Mustafa, muy buena rutina y muy buen trabajo.
Al final lo he hecho como el ejemplo que me indicaste al principio

c:\hmg.3.4.4\Samples\Controls\MenuContext\MENU_ControlContext_1
c:\hmg.3.4.4\Samples\Controls\DATA_BOUND\

Lo único que me tiene un poco preocupado es el tema de la recursividad, ya que llamo a la propia rutina desde la misma rutina.... La opción que cambia el Lenguaje esta dentro del menú..., no se.., igual un dia explota. jajajaja.

Che...!, i una altra cosa..., No sabia jo que en el Xinorlet també es programaba. Bona xent i bon vi..., "Una serveseta pal rateret"

Yo en lugar de una MATRIZ multidimensional, estoy usando una matriz simple y cargo los títulos, opciones, mensajes, leyendas, etc de un fichero binario que abro utilizando FOPEN, FREAD, etc. Así lo tenia en Clipper y así lo tengo ahora, de esta forma solo cargo el idioma que quiero.

Lo que todavía no he modificado es

SET CODEPAGE TO ENGLISH
SET LANGUAGE TO ENGLISH

Me da pereza de momento..., jajajaja

Un saludo,

Post Reply