Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Listar todas las propiedades de cualquier componente (https://www.clubdelphi.com/foros/showthread.php?t=4782)

aglopez 28-10-2003 17:47:56

Listar todas las propiedades de cualquier componente
 
Tras muchas vueltas y no dar con nada en claro, les pido ayuda con el siguiente problema:

Estoy programando una aplicación para diseño de catálogos y necesito guardar estos catálogos en una BD. Aquí se crean
numerosos componentes visuales en tiempo de ejecución a los
que se les puenden cambiar propiedades (tamaño, posición, fuente, color, etc..). Todo esto lo mantengo guardado (en memoria) en un TDA árbol, donde el nodo raíz es el fomulario principal, sus hijos las ventanas hijas, y dentro de éstas paneles, memos, images, etc.

Hasta aquí bien, pero quiero guardar esta estructura en BD y que al cargar un catálogo se creen todos los componentes con las propiedades que tenían al guardarlas.

Y mi problema es que necesito coger la lista de propiedades de cada objeto, nombre y valor, y guardar las que su valor no sea el que tenga la propiedad por defecto.

Muchas Gracias.

roman 28-10-2003 18:00:55

En otras palabras lo que quieres es hacer un IDE.

Te recomiendo que leas el hilo Guardar los cambios de componentes nuevos en donde se muestra un método para leer y guardar componentes de un formulario de y a un archivo. Quizá no sea exactamente lo que deseas en cuanto a que tú lo quieres guardar en una base de datos y omitir las propeiedades cuyo valor es el de "default". Sin embargo creo que los métodos que allí se mencionan, WriteComponent y ReadComponent son un buen punto de partida para lo que buscas.

// Saludos

jachguate 29-10-2003 06:01:02

De hecho, podes basarte en las rutinas de persistencia ya definidas en la clase TPersistent (de la que derivan, entre otras cosas, todos los componentes).

Podrias hacer con un botón, o una etiqueta, etc. una llamada a MiBoton.SaveToStream(...), donde el stream puede ser un campo blob de una tabla!, y luego, en tiempo de ejecución, restaurar sus propiedades con un LoadFromStream(..).

Con ello, trasladarías el método de persistencia por el cual los objetos son restaurados desde el ejecutable de tu aplicación, solo que esta vez, desde una base de datos.

Otra cosa... si investigas un poco en los fuentes de las rusas, que tienen un componente (ahora no recuerdo el nombre) que se basa en rutinas de RTTI (Run time type information) para salvar valores de propiedades en un INI o en el registro.

Hasta luego.

;-)

aglopez 29-10-2003 09:36:59

Gracias a todos.

Ví la luz y voy hacia ella.


La franja horaria es GMT +2. Ahora son las 08:00:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi