FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Listar forms de la aplicación
Hola.
Como podría listar o saber en tiempo de ejecución los forms que tiene el programa? La idea sería listarlos y guardarlos en una tabla. Es para un control de permisos en el cual el administrador del programa le daría los permisos necesarios a cada form. Utilizo D2007 y firebird 2.5. Un saludo y gracias. |
#2
|
|||
|
|||
Si mal no recuerdo en el objeto screen vienen los forms, pero los que usan el createform, si se crean forms al vuelo, no creo que aparezcan a menos que estén creados en ese momento, algo que se me ocurre seria ver los recursos del ejecutable, como ahí se guardan los DFM, entonces podrías obtener todos...
|
#3
|
||||
|
||||
Hola,
Creo, con el compañero, que la variable "Screen" contiene los formularios "creados". Igual si los formularios se crean con el objeto "Application" como "Owner", digo, igual aparecen también en la variable "Screen". Sin embargo, me suena raro usar los formularios para asignar permisos a los diferentes usuarios. Quiero decir que igual hay otras formas más sencillas, más establecidas y estándar. A ver si algún otro compañero puede darte alguna pista. |
#4
|
||||
|
||||
Gracias por responder.
Efectivamente, solo salen los formularios que están en auto-create. Los demás formularios no salen. Lo de los permisos, es porque este cliente es muy especial. Tengo los componentes Tms-Security y para este caso no me valen. En fin... los introduciré uno a uno en la tabla. Un saludo. |
#5
|
||||
|
||||
Hola Luis.
Las primer idea que se me cruzó es ir registrando en una lista los forms en la creación, lo cuál se puede hacer usando TObjectList y unificando la creación en un proceso por ejemplo. Luego mirando por alguna otra opción encontré esto, mucho mas elaborado, que tal vez te pueda servir: Create and Manage dynamic Forms at Runtime using Class References. Con Delphi 2010 o +, pareciera que ya existe una opcion con RTTI, como comentan en el mensaje 6 de este hilo: Dynamically list all forms in a project (imposible para mi Delphi 7 ) Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
||||
|
||||
Hola Luis.
ecfisa te ha dado muy buen información. Yo sólo añadiría esta referencia a un caso similar: http://www.clubdelphi.com/foros/showthread.php?t=20261 Ocurrió hace nueve años. Ahora lo matizaría, pero creo que en esencia es una solución factible con tu versión de Delphi. Un saludo. |
#7
|
||||
|
||||
Gracias por responder.
Muy buenos e interesantes los post de ecfisa y del Al Gonzalez. Se me ha ocurrido una posible solución y me gustaría saber vuestra opinión a ver que os parece. Hay un fichero que tiene todas las clases de formas de la aplicación o programa. Este fichero es el "programax.dpr" Los nombres de la clase de forma está escrito entre llaves {}. Al arrancar del programa, este podría leer el fichero e ir incorporando los nombres de las clases de formas que no existan a la tabla. Lógicamente renombraría el fichero con otro nombre y extensión. Es un programa a medida para un tienda, que posiblemente en un futuro pueda ser una cadena o una franquicia. El cliente quiere ponerle la descripción que él considere oportuna a cada clase de forma (no cambiar el nombre) y aplicar un nivel de permiso que él considere oportuno. Como el programa con el tiempo irá creciendo en opciones, de ahí mi dilema de como ir introduciendo las nuevas clases de forma al apartado de permisos. Adjunto fichero de imagen. Muchas gracias por vuestro tiempo y aporte. Un saludo. |
#8
|
||||
|
||||
No es descabellado distribuir el archivo .dpr junto con el programa ejecutable.
El problema que le veo es que de esa manera tu programa no puede saber cuál es la jerarquía de clases de tus formularios. En cambio, si usas herencia visual (es de suponer que la uses), al registrar tus clases puedes obtener más información sobre cuáles de ellas son formularios de captura, cuáles son formularios de búsqueda, etc. Saludos. Última edición por Al González fecha: 22-08-2014 a las 19:13:06. |
#9
|
||||
|
||||
Hola Al.
Lo que dices es muy correcto, pero en este caso (por el momento hasta que no lo pida el cliente) no es necesario. Incluso el fichero .dpr tendré que modificarlo manualmente y quitarles algunas cosas como el login, el data module, etc. Un saludo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Aplicacion sin forms | billy_hates | Varios | 11 | 14-04-2010 13:56:20 |
Listar todos los nombres de los Formularios de mi aplicacion | gabriel_exe | Varios | 10 | 08-04-2009 18:10:48 |
Errror al Cerrar Aplicacion con Dll Forms | look | Varios | 1 | 13-03-2009 22:23:30 |
Acceder a los forms abiertos de tu aplicacion | Neftali [Germán.Estévez] | Trucos | 0 | 07-06-2006 09:55:15 |
Listar Forms Hijos | cso2000 | Varios | 2 | 20-05-2003 21:11:13 |
|