Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Obtener la propiedad "Name" del Form en ejecución


Fito
18 de julio de 2016, 17:29
Hola Amigos:

La propiedad "Name" de un form solamente se puede usar en diseño, cómo puedo saber cuál es el nombre de un form en tiempo de ejecución?

Saludos.

Fito...

Kuk
18 de julio de 2016, 17:49
Fito, por PowerCOBOL no se puede, debes saber el nombre. Se puede seguramente hacer por WinAPI, pero cargando la DLL para obtener todas las funciones que exporta.

Toda DLL compilada en PowerCOBOL contiene unas funciones que corresponden a funciones ActiveX estandar (diría yo), + las rutinas globales COBOL que hayas incluido en el proyecto + funciones que corresponden con los nombres de los Form.

Las funciones ActiveX que están presentes en todas las DLL de PowerCOBOL son:

DllCanUnloadNow
CfDllGetClassObjectByName
DllGetClassObject
DllRegisterServer
DllUnregisterServer


El resto serían funciones con el mismo nombre que el Form + las globales. El caso es que aún así hay que conocer las reglas del nombramiento de esa DLL.


Por cierto, para qué lo necesitas??? ;)

Fito
18 de julio de 2016, 22:53
Hola KUK:

Lo necesito para poder hacer un sistema de permisos, para poder decirle a cada usuario en cuál form puede entrar o no.
Ahora estoy usando una variable y le muevo yo el nombre, pero quería hacer algo más general.
También podría usar el "Caption" del form, pero me parecía más correcto hacerlo con el name, porque me aseguraría de que no se repitiera.

Saludos.

Fito...

Kuk
19 de julio de 2016, 00:06
Fito, yo creo que te estás complicando la vida. Se puede hacer de manera más fácil, con variables globales. Si un usuario no tiene permiso de abrir un Form, prohibirlo desde el Form llamante y ni siquiera abrir Form hijo.

Quiero decir, ya sabes qué Forms tienes, ¿por qué buscar los nombres en dinámico? Yo pensaba que no sabías qué Forms tendrías o algo así... :confused:;)

Rapinto
19 de julio de 2016, 00:47
Fito,

Poderias usar a "Description" da Form. A "description" não é a "Caption".
Ou o "ProgId". Terias que retificar o ProgID na tab OLE da Form.

Em cada Form garante no "Open" da Form que o nome é igual ao da Form com:

move "FrmMain" to "Description" OF POW-SELF.


No teste se pode ou não usar:


IF "Description" OF POW-SELF = "FrmMain"
DISPLAY "NÃO PODE USAR ESTA FORM"


A "Description" está na tab "OLE" das propriedades da Form.

Não sei se isto te poderá ajudar.

Un saludo,
Rui Pinto