Pregunta

En un formulario de Delphi, me gustaría reemplazar un componente visual con otro. Ejemplo: quiero reemplazar un componente del Panel con un ElPanel de un paquete de terceros.

Me gustaría que todas las propiedades y eventos idénticos del primer componente se transfieran al nuevo, y que todos los componentes que pertenecen al primer componente (por ejemplo, barras de herramientas, notas, barras de estado, etc.) terminen colocados en el nuevo componente exactamente donde estaban en el primero.

¿Existe una forma mejor / más fácil de hacer esto que no sea agregar el nuevo componente al formulario y transferir meticulosamente cada propiedad, evento y componente uno por uno?

¿Fue útil?

Solución

Lo hago como sigue:

  1. Haga clic con el botón derecho en el formulario y seleccione (Ver como texto).
  2. Presione Ctrl + F para buscar el nombre de la clase de Componente como TPanel y reemplazarlo con TElPanel
  3. Volver al formulario (ver como formulario)
  4. En la sección de la interfaz, reemplaza el TPanel con TElPanel.

Si tiene muchos componentes, GExperts será una solución más viable.

Otros consejos

Puede usar GExperts o puede hacerlo a mano.

Para hacerlo a mano, abra el .dfm en el bloc de notas y reemplace todos los nombres de clase. (Reemplace TPanel con TElPanel por ejemplo). Cuando haya realizado todos los cambios, abra el archivo .pas con el Bloc de notas y haga lo mismo.

Asegúrese de agregar las unidades requeridas a su cláusula de usos.

Luego, abra el formulario en el IDE y limpie cualquier evento que no coincida o problemas de propiedad desconocidos.

Si recuerdo el excelente complemento gratuito de GExperts hace esto. Haga clic derecho en su formulario y seleccione " Reemplazar componentes " ;. http://www.gexperts.org

En mi humilde opinión, el gran inconveniente del componente Reemplazar GExpert es que cambia el orden de los componentes en el código fuente. Eso no es muy amigable VCS. :-)

Si tiene otros componentes dentro de un contenedor, este reemplazo con GExperts causará algunas excepciones feas y posiblemente un comportamiento inesperado en el IDE.
Entonces, la mejor solución es editar el archivo .dfm donde desee (dentro o fuera del IDE) y reemplazar manualmente los tipos de componentes que desea cambiar. Tal vez también cause algunas excepciones, pero el IDE las administrará.
Si lo hace dentro del IDE, después de cambiar a la vista de diseño, si guarda el archivo .dfm inmediatamente, el IDE le pedirá que cambie el tipo de variables relacionadas con los componentes que tocó, lo que le permitirá hacerlo.

  

Para convertir entre texto y formatos binarios dfm, use la herramienta convert.exe en el directorio Delphi bin \. & # 8211; Tim Knipe (28 de octubre a las 4:15)

También puede usar el menú contextual del diseñador de formularios, al menos con BDS 2006. Es el último elemento del menú (" Texto-DFM " en un IDE alemán).

En mi proyecto tuve que convertir algunas formas doezens de un conjunto de componentes a otro. He creado un pequeño script de Perl para convertir componentes y sus propiedades y hacer todos los mapeos necesarios. El script es una solución rápida y sucia, pero es altamente configurable. Analiza todos los archivos dfm y pas en el directorio de proyectos y convierte las definiciones de los componentes dfm de acuerdo con las reglas que debe proporcionar en los procedimientos / eventos ObjectBeginFound, PropertyFound, ObjectEndFound.

Los archivos DFM deben estar en modo de texto. Probado en archivos Delphi 5. No sé si será compatible con las nuevas versiones. Por favor envíe mensajes si lo descubre.

USO: perl.exe cxdfm.pl > logfile.txt

DESCARGAR ENLACE http://dl.dropbox.com/u/15887789/cxdfm.pl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top