![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
File \ New \ (Nombre Proyecto) \ (Forma Padre) Es herencia visual sin el uso del repositorio (a la larga es un repositorio de todos modos )
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#2
|
||||
|
||||
|
Cita:
// Saludos |
|
#3
|
||||
|
||||
|
Para completar este hilo, tengo una pregunta mas que me surgio al heredar visualmente un form.
Primero cree dos forms: FormBase y FormEditBase, a estos le puse controles generales ya que de ellos voy a derivar los que realmente uso. El tema es que en FormBase quiero usar a FormEditBase, o sea hago lo siguiente: Código:
procedure TFormBase.BtnNuevoClick(Sender: TObject); begin with TFormEditBase.Create(Application) do try ShowModal; finally Free; etc..... La pregunta: qué código debería ir en BtnNuevoClick, para que use FormEditBase1 que es derivado de FormEditBase. Graficamente se podria ilustrar para que quede mas claro de la siguiente manera: Form usa a Form FormBase ---> FormEditBase FormBase1 ---> FormEditBase1 ....... ....... FormBaseN ---> FormEditBaseN No se si estoy hablando en chino o si me entendieron algo , de todas maneras espero alguna luz sobre el asunto. Desde ya muchas gracias. |
|
#4
|
||||
|
||||
|
Cita:
Si te fijas, tu necesitarías poder tener TFormEditBase1.Create(Application) TFormEditBase2.Create(Application) ... TFormEditBaseN.Create(Application) según sea el caso. Pero la sentencia debe estar en el formulario base y no en cada descendiente. Entonces requerirías poner la clase del formulario de edición (TFormEdit1, TFormEdit2, etc.) en una variable que tomase uno de estos valores según corresponda. Pero si lees detenidamente verás que es un poco extraño: los valores de dicha variable serían tipos de datos de manera que, ¿cuál sería el tipo de datos de tal variable? La respuesta es: referencias de clase. Las referencias de clase son tipos de datos cuyas variables (variables de este tipo) toman como valores otros tipos de datos. Para usarla declara una para tu formulario base de edición:
Así, una variable de tipo TFormEditBaseClass podrá tomar como valores cualquier clase descendiente de TFormEditBase. En la práctica lo que podrías hacer es agregar una de estas variables al formulario base:
y cambiar la creación del formulario de edición así:
Entonces, lo único que debes hacer es asignar el tipo correcto en el momento adecuado, por ejemplo, en el constructor de cada descendiente de TFormBase:
Para más información busca "Class references" en la ayuda de Delphi. // Saludos Última edición por roman fecha: 29-05-2004 a las 17:14:52. |
|
#5
|
||||
|
||||
|
Sencillamente espectacular! Funciona a la perfeccion, y creo que gracias a Roman me voy a ahorrar mucho codigo a partir de ahora.
Todavia me cuesta ver bien cual es el funcionamiento de "Referencia de Clases", pero el que logre entenderla creo que da un gran paso en lo que es OOP en Delphi. Gracias! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|