Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2011
maunix maunix is offline
Miembro
 
Registrado: jul 2007
Posts: 10
Poder: 0
maunix Va por buen camino
Question ¿Componente a partir de Diseño GUI?

Buenas tardes, he buscado en varios foros y googleando y no encuentro un ejemplo que responda a mi inquietud, tal vez he usado las palabras claves inadecuadas pero la verdad es que siempre prefiero buscar la respuesta antes que preguntar, para no hacer perder tiempo a nadie si es que la respuesta es obvia y está en varios sitios.

El tema es el siguiente, hace tiempo que codifico en Delphi, he creado muchisimos componentes visuales y no visuales, y no he tenido problemas hastsa ahora.

Cuando son visuales, el diseño lo suelo hacer en algún formulario y luego tomo referencia de los componentes que componente a mi "futuro componente", tomo referencia de las coordenadas X e Y relativas, y codifico lo mismo. El resultado es idéntico, pero debo escribir a mano la creación de cada TLabel, TEdit, TSpinEdit y la lista sigue de componentes que forman parte de mi componente; luego debo indicar el parten,el left, el top, y todas todas las propiedades de cada uno de los componentes que no son las por defecto al crear el mismo.

En la actualidad me encuentro frente al desafío de crear un componente bastante complejo el cual segun el análisis deberá ser un Tpanel ya que podrá haber varios dentro de un formulario; ahora bien quisiera ahorrarme tener que diseñarlo gráficamente para luego copiar todas las propiedades y codificarlas a mano.

He aquí la pregunta

¿Hay alguna práctica o truco para diseñar gráficamente un componente y luego poder acceder al código y coordenadas de sus partes componentes? El elemento que debo diseñar es la copia de un formulario que ya tengo pero que contiene numerosos tabs (pero ahora deberá ser un Tpanel), posee algo asi como 1000 componentes que reflejan la complejidad del objeto y realmente me quisiera evitar tener que codificar a mano semejante cantidad de código para crear el mismo.

Lo que suelo hacer es hacer alt+f12 para acceder directamente al codigo de creación del formulario pero no me sirve para lo que quiero hacer ahora ya que no escapo de tener que copiar y pegar cada propiedad y demases.

Espero se haya entendido mi inquietud, desde ya muchas gracias.


Saludos
Responder Con Cita
  #2  
Antiguo 25-08-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Has probado con frames ?

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 26-08-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No lo entiendo. Algo se me escapa.

Si es "la copia de otro form", ¿por qué no copias el archivo .dfm y pas?

Sea de la manera que sea, yo entraría por parsear el código delphi y dfm (cargarlos en TStringLists) y a partir de ahí, generar el código fuente del Form resultado.

ejem... a ver si me explico:
Código Delphi [-]
// crea archivo
ts := TStringList.Create;
ts.Add('unit duplicada;');
ts.Add('');
ts.Add('uses Windows, Classes, ComCtrls ....');
ts.savetofile('c:\archivo.pas');
y después harías el .dfm también.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 26-08-2011
maunix maunix is offline
Miembro
 
Registrado: jul 2007
Posts: 10
Poder: 0
maunix Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Has probado con frames ?

Saludos
Gracias por tu respuesta, no no he probado porque justamente pensaba en un Tpanel y no en una ventana dentro de otra, no tengo experiencia en frames, pero echaré un vistazo a ver si se adapta a mis necesidades.

Cita:
Empezado por lepe
No lo entiendo. Algo se me escapa.

Si es "la copia de otro form", ¿por qué no copias el archivo .dfm y pas?
Actualmente la información está en formularios TForm, pero cada formulario muestra la información de un dispositivo (estoy monitoreando hardware), ahora bien en cuanto al nuevo diseño del soft, la idea es que cada elemento dispositivo sea un Tpanel porque la complejidad se ha aumentado y un dispositivo 1 puede ser del tipo A pero a su vez un dispositivo 2 puede a su vez estar formado por varios dispostivos A y B... entonces para mostrar en forma más uniforme la información había pensado en componentes heredados de Tpanels donde cada uno maneje la complejidad de su dispositivo en sí y el resto es acomodar la info en la pantalla.

Por eso es que digo que hoy por hoy es un form, pero me parece quedaría mejor siendo un Tpanel (lo puedo inhabilitar, hacer invisible, mover, etc). No tengo experiencia en frames como me mencionó fjcg pero por ahí se resuelve por ese lado con algun form sin bordes ni nada.

Lo que propones suena razonable aunque quería ver si había alguna forma más directa y automática


Cita:
Empezado por duilioisola
Creo que GExperts tiene exactamente lo que necesitas
Echaré un vistazo, gracias por el dato.


Gracias a todos por su ayuda, ahora me pondré a ver el tema más en detalle y a hacer algunas pruebas, cuando lo pueda resolver, volveré comentando cómo lo hice porque seguro a alguno le servirá como camino a seguir o como camino a no seguir
Responder Con Cita
  #5  
Antiguo 26-08-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Tema formularios:
Se me ocurre que puedes generar el formulario 'al vuelo'. Además, puedes ponerle el parent que quieras, y de esa manera puede quedar 'incrustado' dentro de otro formulario.

Para generar el formulario 'al vuelo'

InstanciaFormulario1:= Application.CreateForm(TFormBusqueda, FormBusqueda);
InstanciaFormulario2:= Application.CreateForm(TFormBusqueda, FormBusqueda);

Previamente tienes que definir las variables
var InstanciaFormulario1, InstanciaFormulario2: TFormBusqueda;

Luego les asignas el parent ( aunque en este caso no tengo total seguridad de que la llamada sea así )

Tema Frames:
Los frames los puedes crear 'al vuelo', tantos como quieras. Un frame puede constar de un TPanel y los controles que quieras dentro de él, así como el código asociado a los mismos.

Espero haberte ayudado.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 26-08-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Te paso un cutreejemplo de frames con un TPanel. Espero que te sirva.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 11-02-2012 a las 15:32:32.
Responder Con Cita
  #7  
Antiguo 26-08-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Lo que yo te recomiendo para tu caso es que utilices formularios empotrados. O en su defecto TFrames a cómo te lo han dicho. Creo que es lo mejor que puedes hacer. Son como un componente, pero tienes la posibilidad de hacerle cambios visualmente.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 26-08-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que GExperts tiene exactamente lo que necesitas:

Components to Code
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar nombre de componente al insertar en Diseño agustibaldo OOP 4 06-04-2010 17:49:02
Delphi no encuentra el componente de diseño (BPL) ContraVeneno Varios 7 01-10-2008 21:58:02
Componente que hay que activar en ejecucion, aunque se ve en fase diseño? José Luis Garcí OOP 21 14-09-2007 21:41:27
crear componente a partir del archivo PAS edusus Varios 2 02-04-2006 23:25:33
Componente para agilizar diseño de interfaces Mauro.NET OOP 0 04-08-2005 01:28:45


La franja horaria es GMT +2. Ahora son las 15:03:28.


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
Copyright 1996-2007 Club Delphi