Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 02-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Al González,

Cita:
Empezado por Al González
...¿cómo podría el constructor Create de un componente, como el que pusimos dentro de nuestro formulario, saber qué nombre le dio usted en tiempo de diseño?...
Cita:
Empezado por Al González
...Añadiré otra pista: Si bien redefinir un método de TForm es clave para resolver el problema, puede que su constructor no sea el más adecuado...
Cita:
Empezado por Al González
...La solución que tengo en mente propone aprovechar los mecanismos de streaming existentes, colgarnos del tren que va avanzando, por decirlo de una manera, redefiniendo no sólo el constructor del componente de prueba, sino también cierto método virtual del formulario para permitir al componente acceder al furgón de la correspondencia...
Cita:
Empezado por Al González
...Daré otra pista, esta vez una jugosa: Durante la ejecución del constructor del componente, "algo" ya está procesando el DFM, entonces preguntémosle a ese "algo" (como dije anteriormente, "colgarnos del tren y acceder al furgón de la correspondencia")...
Cita:
Empezado por Al González
...Meterse directo al recurso DFM puede servir, pero esto no va por ahí. La solución es más limpia, elegante y orientada a objetos...
Los comentarios anteriores fueron tomados de : Rescatando a Delphi - Reto Delphi

Revisa este código:
Código Delphi [-]
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
    
      TButton = class(StdCtrls.TButton)
      private
        FName : String;
      public
        constructor Create(AOwner: TComponent); override;
        procedure SetName(const NewName: TComponentName); override;
        destructor Destroy; override;
      end;
    
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    constructor TButton.Create(AOwner: TComponent);
    begin
       inherited Create(AOwner);
    end;
    
    procedure TButton.SetName(const NewName: TComponentName);
    begin
       inherited SetName(NewName);
       FName := Name;
       ShowMessage(Name);
    end;
    
    destructor TButton.Destroy;
    begin
       inherited;
    end;
    
    end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32, obtiene y muestra el nombre asignado en tiempo de diseño a las instancias del componente TButton inmediatamente después de finalizar el constructor del mismo y antes de que sea visualizado el formulario. Los métodos Create y Destroy no son necesarios para obtener el nombre del componente TButton, fueron colocados solo para seguir la secuencia en Runtime del componente en modo Debug.

Nota: Se utilizo como ejemplo el componente TButton, pero el mismo procedimiento se puede extender a cualquier componente dentro de un formulario, con lo cual se obtiene el nombre asignado al mismo en tiempo de diseño inmediatamente después de finalizar su constructor.

Comentario: Desconozco si esta es la solución que esperabas encontrar , pero creo que resuelve el problema en términos de POO de forma simple y directa por medio de la redefinición del método virtual SetName del componente requerido

Revisa esta información:
Cita:
Empezado por RAD Studio VCL Reference
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 02-05-2014 a las 05:58:49.
Responder Con Cita
 



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
Reto Delphi 2011 Al González OOP 54 08-04-2011 09:45:12
Un reto con Qreport MRSAM Conexión con bases de datos 8 13-07-2007 19:10:58
Un reto a todos Rendertaker Internet 3 14-04-2004 22:51:29
Reto de Impresora (VB vs Delphi) torito Varios 12 21-11-2003 19:54:59


La franja horaria es GMT +2. Ahora son las 10:09:20.


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