Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Modificar Propiedades de un FORM (https://www.cobolforo.es/showthread.php?t=146)

Recato53 2 de junio de 2015 16:22

Modificar Propiedades de un FORM
 
Quiero cambiar la propiedad WindowState de un FORM en tiempo de ejecución.

En la definición el FORM esta creada la propiedad como NORMAL, pero dependiendo del usuario que ejecuta la aplicación quiero poner MAXIMIZE.

Sabe alguien como conseguir esto.
Como siempre digo con comandos del PowerCobol.

Gracias.
Un Saludo.

Hrmcobol 2 de junio de 2015 16:33

Hola Amigo Aquí Un Ejemplo


Código COBOL:
  1.      IF V-Height < 800 INVOKE POW-SELF "ShowForm" USING POW-SWSHOWMAXIMIZED.

Puedes reemplazar POW-SELF por el nombre del form


Busca las otras opciones en el Help.

Saludos

Recato53 2 de junio de 2015 17:17

Cita:

Citación del post de Hrmcobol (Mensaje 631)
Hola Amigo Aquí Un Ejemplo


IF V-Height < 800 INVOKE POW-SELF "ShowForm" USING POW-SWSHOWMAXIMIZED.

Puedes reemplazar POW-SELF por el nombre del form


Busca las otras opciones en el Help.

Saludos

He insertado esta línea en mi programa:

Código COBOL:
  1. INVOKE FR-PEDVENT "ShowForm" USING POW-SWSHOWMAXIMIZED

Cuando ejecuto el programa me aparece el mensaje:
Illegal function call.

Josber 2 de junio de 2015 18:57

Dos cosas:

- ¿ Has probado con POW-SELF en vez de FR-PEDVENT ?
- ¿ Qué versión de PWC estás usando ?

Yo uso mucho la instrucción "ShowForm", (sobre todo cuando abro un form de consulta con un listView, porque si no la uso, hasta que no ha terminado de cargar todo el listview no muestra el formulario), y no me da ningún problema.

Un saludo.-

Hrmcobol 2 de junio de 2015 19:51

El "FR-PEDVENT" va entre comillas

Saludos

PERDON NO VA ENTRE COMILLAS, lo acabo de probar con el nimbe directamente y funciona debe ser otro el problema

Saludos

Rapinto 3 de junio de 2015 00:48

Recato33

Verifica no "style" se está com a opção de "variable".
Se estiver "Fixed" ou "fixedtool" não podes maximizar.

Normalmente é esse a causa do erro.

Un saludo,
Rui Pinto

Kuk 3 de junio de 2015 09:30

Josber, para que te muestre el formulario, debes usar la instruccion ThruEvents. EN los bucles lo mismo.

En cuanto al problema descrito por Recato53, estoy de acuerdo con Rui, ese debe ser el problema.

Tambien aconsejo usar siempre POW-SELF, porque es un pointer al Form actual, y asi el codigo te vale en Forms diferentes y no hay que cambiar nada. Es decir, ¡MI-FORM y POW-SELF equivalen en cualquier Form!

Josber 3 de junio de 2015 11:07

Cita:

Citación del post de Kuk (Mensaje 639)
Josber, para que te muestre el formulario, debes usar la instruccion ThruEvents. EN los bucles lo mismo.

Kuk, "ThruEvents" es lo primero que probé y no me funcionaba, así que probé de la otra forma y a funcionar.

Un saludo.-

Recato53 3 de junio de 2015 13:19

Cita:

Citación del post de Rapinto (Mensaje 636)
Recato33

Verifica no "style" se está com a opção de "variable".
Se estiver "Fixed" ou "fixedtool" não podes maximizar.

Normalmente é esse a causa do erro.

Un saludo,
Rui Pinto

Muchas gracias a todos.

BorderStyle = 0, Variable
MaxButton= Activo

Con esta configuración funciona correctamente.

¿Se pueden cambiar estas propiedades una vez maximizada el FORM?.

Muchas gracias.

Kuk 3 de junio de 2015 17:27

Cita:

Citación del post de Recato53 (Mensaje 646)
¿Se pueden cambiar estas propiedades una vez maximizada el FORM?.

No se puede. Estas propiedades son modificables sólo en modo diseño. Se puede hacer por WinAPI, pero es algo más complicado, son varias llamadas. Ademas, no tiene mucho sentido. Si diseñas un Form variable, debes reposicionar y redimensionar cosas en el evento "Resized" del Form.

Josber, si cargas directamente en "Opened", no te lo va a mostrar nunca. El truco en este caso es meter un CmTimer. En modo diseño, le quetas el "Active" al Timer y le pones medio segundo (500) o 1 segundo (1000). En "Opened" del Form, haces lo que haya que hacer (sin la parte de la carga del ListView), y la última línea debe ser:

Código COBOL:
  1. /POW-SELF==>"Opened"
  2. ...
  3. MOVE POW-TRUE TO "Active" OF CmTimer1

Y en el evento "Timer" del CmTimer1 metes:

Código COBOL:
  1.  
  2. MOVE POW-FALSE TO "Active" OF CmTimer1
  3.  
  4. ...el código de carga del ListView con "ThruEvents" en cada iteración del bucle


La franja horaria es GMT +2. Ahora son las 07:31.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.