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 10-04-2005
Mauro.NET Mauro.NET is offline
Miembro
 
Registrado: mar 2005
Posts: 70
Poder: 20
Mauro.NET Va por buen camino
Saber que Formularios no se crearon

Hola, como se puede saber via codigo todos los formularios que tiene
disponible mi aplicacion cuando aun estos no han sido creados?

Cuando hago un recorrido de Application.Components solo me dice
los formularios creados que se encuentran en memoria.

Por ahi he leidos augunos topicos del foro acerca de ello, pero hasta ahora nadie descubrio la forma de hacerlo?

Gracias.

Última edición por Mauro.NET fecha: 10-04-2005 a las 20:06:02.
Responder Con Cita
  #2  
Antiguo 10-04-2005
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile RegisterClass y TClassFinder.GetClasses

¡Buen día a todos!

Mauro:

Una manera de hacerlo es asegurándote de que cada clase de forma (formulario, como tu le llamas) sea registrada al inicio de la aplicación. Así, podrás utilizar un objeto TClassFinder para obtener una lista de todas las formas registradas, aún cuando no se tenga creada una instancia de alguna de ellas.

Supongiendo que tenemos dos formas en nuestra aplicación, TForm1 y TForm2, dónde la primera es autocreada como forma principal y la segunda no se instancía en ningún momento; con el código
Código Delphi [-]
...
implementation

{$R *.dfm}

Initialization
  RegisterClass (TForm2);
end.
al final de la unidad de la forma Form2, y el código
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Procedure FormaRegistrada (Clase :TPersistentClass);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

{ El método auxiliar FormaRegistrada es la rutina de retrollamada
  ("callback") auxiliar, a utilizar por el método de enumeración
  TClassFinder.GetClasses }
Procedure TForm1.FormaRegistrada (Clase :TPersistentClass);
Begin
  { Si la clase enumerada es descendiente de TForm } 
  If (Clase <> TForm) And Clase.InheritsFrom (TForm) Then
    { Agregar su nombre en el cuadro de texto Memo1 } 
    Memo1.Lines.Add (Clase.ClassName);
End;

{ Manejadores de eventos }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;

  With TClassFinder.Create Do
    Try
      { Enumerar todas las clases registradas }
      GetClasses (FormaRegistrada);
    Finally
      Free;
    End;
end;

Initialization
  RegisterClass (TForm1);
end.
en la unidad de TForm1, al oprimir el usuario el botón Button1 se introducirán en el cuadro de texto Memo1 los nombres de las dos clases de formas (TForm1 y TForm2).

Así pues, para cada forma adicional del proyecto sólo hay que agregar su respectivo registro (RegisterClass (TFormX);) en la sección Initialization de su unidad .pas.

Espero esto sea de utilidad, seguimos en contacto.

Al González.

Echale un vistazo a los nuevos Cursos Delphi
Responder Con Cita
  #3  
Antiguo 11-04-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
Muy interesante Al. Nunca había oído hablar de esta clase.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 03:36:41.


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