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 08-02-2018
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Hola juank1971

Supongo que no quieres hacer tu propio componente y registrarlo... así que creo que lo que necesitas es una clase interceptora.. es un concepto "parecido"*** (con muchos asteriscos) al de Helpers.

Mira éste código:

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type

  //esta es la clase interceptora... "modifica" la funcionalidad del TListbox (que para el caso es el componente que voy a modificar)
  TListBox = class(vcl.stdctrls.TListBox)
  private
    FContador: Integer;
  public
    Function AddContador: Boolean;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox; //aqui defines el TListbox
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TListBox }

//ésta es la implementación de la clase interceptora.. 
function TListBox.AddContador: Boolean;
begin
  inc(FContador);
  Self.Items.Add( IntTostr(Fcontador));
end;

//Aqui el TListbox original.. comienza a utilizar la funcionalidad y variables de la interceptora
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.addContador;
end;

end.


Se llama interceptora porque se ubica entre la unidad original del componente y la definición de la variable:

Código Delphi [-]
Uses Vcl.StdCtrls

//Clase interceptora
TListBox = class(vcl.stdctrls.TListBox)
end;

//Definicion de la variable
TForm1 = class(TForm)
  ListBox1: TListBox;
private
public
end;


Ésto quiere decir que si defines la clase después, ya no te va a funcionar

Código Delphi [-]
Uses Vcl.StdCtrls

//Definicion de la variable
TForm1 = class(TForm)
  ListBox1: TListBox;
private
public
end;

//Clase interceptora definida despues de la variable (listbox1)
TListBox = class(vcl.stdctrls.TListBox)
end;


también puedes definir la clase en una unidad aparte, por si la vas a utilizar en varios formularios, pero teniendo en cuenta que siga interceptando:


Código Delphi [-]
Uses Vcl.StdCtrls, LaUnidadDeLaClaseInterceptora;

//Definicion de la variable
TForm1 = class(TForm)
  ListBox1: TListBox;
private
public
end;

Espero que te sirva, saludo,
Responder Con Cita
  #2  
Antiguo 08-02-2018
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
ok gracias lo pruebo y te cuento gracias por responder
Responder Con Cita
  #3  
Antiguo 08-02-2018
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
ya lo probe, funciona muy bien
aqui estaba mirando otra idea https://stackoverflow.com/questions/...ion-on-android

pero la tuya es mas limpia y completa sirve para muchas cosas. Gracias por compartir.
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
Delphi 7 Crear programa para crear conexión BDE Rockardo777 Varios 10 31-08-2017 11:45:31
Crear un COM jars Providers 1 02-03-2011 15:27:25
crear instalador, ejecutar al iniciar i crear desinstalador vivamotos C++ Builder 1 25-08-2006 14:13:01
Crear un PDF? danytorres Varios 0 12-07-2004 17:08:10
Crear BD cpal Firebird e Interbase 5 08-03-2004 16:11:01


La franja horaria es GMT +2. Ahora son las 18:12:28.


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