Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Reto Delphi

Nuestro amigo Al González ha publicado en su blog un reto para los programadores Delphi, puede participar quien quiera y obtener el premio para el ganador a la mejor solución.
Responder Con Cita
  #2  
Antiguo 04-07-2013
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.467
Poder: 21
newtron Va camino a la fama
Buen reto, a ver los programadores del foro si salen por la puerta grande o por el chiquero, yo miraré desde la barrera.
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 04-07-2013
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
Leer el archivo DFM asociado al formulario. Allí puedes encontrar el nombre que tendrá el componente.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 04-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Deberías contestar en los comentarios del blog de Al, ya que allí están las respuestas de los participantes

Suerte
Responder Con Cita
  #5  
Antiguo 07-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Ningún valiente se atreve con el reto?, jejeje...
Blog de Al González.
Responder Con Cita
  #6  
Antiguo 27-04-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Muchas gracias, Casimiro, por hacer eco del ejercicio que propuse en mi bitácora hace casi 10 meses.

No creí que fuera a transcurrir tanto tiempo sin que algún compañero de la Comunidad lo resolviera. Algunos pensarán entonces que el reto es muy difícil, pero no es así, es sólo que el truco está un poco escondido en los engranes de la VCL (además de la poca difusión que ha tenido).

Me gustaría ofrecer un monto mayor de premio, y si llega a estar en mis capacidades así lo haré con mucho gusto. Como sea, ojalá más gente se una.

Un saludo y buena semana a todos.
Responder Con Cita
  #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: 21
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
  #8  
Antiguo 02-05-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero contesta en el blog de Al González
Responder Con Cita
  #9  
Antiguo 02-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Casimiro,

Cita:
Empezado por Casimiro
...Pero contesta en el blog de Al González...
Ya lo conteste



Nelson.
Responder Con Cita
  #10  
Antiguo 02-05-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estupendo, alguien se va a llevar el premio
Responder Con Cita
  #11  
Antiguo 02-05-2014
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 nlsgarcia Ver Mensaje
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.
El reto especifica que el nombre ha de obtenerse desde el constructor del componente, no del formulario. El método SetName es llamado por TReader.ReadComponent después de la llamada al constructor del componente.

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

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 23:36:25.


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