Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Busquen el apartado How can I publish a property of type T[Custom]Form? en gexperts.

// Saludos
Responder Con Cita
  #2  
Antiguo 08-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo único que me queda claro (o es lo que me esfuerzo para que me quede claro) es que publicar (de modo que pueda editarse en el Inspector de Objetos) una propiedad de tipo "TForm" es, cuando menos, problemático.

Así que habría que publicarla de tipo "string" o similar (?) de manera que fuera la que albergara el nombre de la clase del formulario que nos interese, para luego utilizar una función como "GetClass" para poder trabajar con esta.

Desde luego buscando en Google no parecen encontrarse muchas (por no decir ninguna concreta y que sirva para lo que nos ocupa) referencias al asunto de publicar una propiedad de tipo "TForm" manipulable desde el Inspector de Objetos.

¿Alguien saca algo más en claro del texto que roman ha enlazado más arriba? Definitivamente hay días que mejor no haberse levantado uno de la cama, como suele decirse. Así que, como ya va siendo hora, voy a hacer como si no me hubiera levantado echándome de nuevo a leer un rato, por lo menos, a ver si se me levanto con otro pie.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 08-09-2005
Avatar de buildero_d
buildero_d buildero_d is offline
Miembro
 
Registrado: sep 2005
Ubicación: Puebla, México
Posts: 37
Poder: 0
buildero_d Va por buen camino
Que tal Dec,

Efectivamente, estoy de acuerdo contigo. Al parecer es algo no muy sencillo de hacer, y hasta puede que no sea posible.

La propuesta de publicar la propiedad de tipo string creo que pueda ser la solución, y explicare por que.

Esta explicación esta basada en un componente que esta incluido en la suite de componentes de "ABC for Delphi" (en su versión para C++ Builder).

Bien pues resulta que tiene un componente llamado "abcFormTabControl", dicho control te permite crear varias "pestañas" y en cada una de ellas puedes mostrar un formulario. La forma en como se hace la referencia al formulario es a través de una propiedad llamada Forms, que no es mas que una lista de los forms que te interesan presentar en cada una de las pestañas.

Se deduce que al tener solamente el nombre del formulario se crea una instancia del mismo.

Hice algunas pruebas al respecto y me encontre que al especificar un nombre de formulario no valido (por ejemplo MiForm) la aplicación envia el mensaje "Class TMiForm not found". Es decir hace uso de la función FindClass para verificar si la clase esta registrada.

En conclusión la forma de poder trabajar con forms haciendo referencia a ellos (en mi caso desde un componente personalizado) es a tráves del nombre del formulario.

Ahora en lo que me he enfocado es en averigüar ¿cómo crear la instancia de un form a través del nombre del formulario?, es decir, que con la propiedad de tipo string que me indica el nombre, poder crear y descargar el form. Esto puede ser menos complicado que lo anterior pero en este momento no sé como hacerlo.

Saludos.
Responder Con Cita
  #4  
Antiguo 08-09-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por buildero_d
Ahora en lo que me he enfocado es en averigüar ¿cómo crear la instancia de un form a través del nombre del formulario?, es decir, que con la propiedad de tipo string que me indica el nombre, poder crear y descargar el form. Esto puede ser menos complicado que lo anterior pero en este momento no sé como hacerlo.
En efecto, esto es sencillo:

Código Delphi [-]
// FormClassName es el nombre de la clase del formulario

var
  FormClass: TPersistentClass;

begin
   // Ver si el formulario está registrado
   FormClass := FindClass(FormClassName);

  // Ver que realmente sea un descendiente de TForm
  if FormClass.InheritsFrom(TForm) then
    // Crear el formulario y mostrarlo
    with TFormClass(FormClass).Create(Application) do
      Show;

Para que esto funcione debes registrar previamente la clase del formulario con RegisterClass o RegisterClasses. Lo más cómodo es hacerlo en la sección initialization de la unidad del formulario.

// Saludos
Responder Con Cita
  #5  
Antiguo 09-09-2005
Avatar de buildero_d
buildero_d buildero_d is offline
Miembro
 
Registrado: sep 2005
Ubicación: Puebla, México
Posts: 37
Poder: 0
buildero_d Va por buen camino
Hola,

Pues muchas gracias por su ayuda, al fin en conseguido lo que necesitaba (claro traduciendo el codigo a C++ Builder ) y va de maravilla. Sus aportaciones me ampliaron mucho el panorama.

En definitiva la opción que tomé fue la de la propiedad tipo string para generar la instancia del form.

Un saludo y nuevamente, gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 15:37:12.


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