Añadir eventos a un tlist.


la Adición de un tipo de procedimiento a un TList, o TStringList
Aquí está el código que he usado para lograrlo:
unit Unit1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,
& nbsp & nbsp StdCtrls
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp ListBox1: TListBox
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ListBox1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicación
{$R *.DFM}
tipo
& nbsp & nbsp TEventObject = clase
& nbsp & nbsp protegido
& nbsp & nbsp & nbsp & nbsp //Cambio aquí (Para beginers sólo)
& nbsp & nbsp & nbsp & nbsp FEvent: TNotifyEvent
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp //Cambio Aquí (Para beginers sólo)
& nbsp & nbsp & nbsp & nbsp Evento de la propiedad: TNotifyEvent leer FEvent escribir FEvent

& nbsp & nbsp final
//Para agregar a la lista
procedure TForm1.Button1Click(Sender: TObject)
var a: TEventObject
begin
& nbsp & nbsp R := TEventObject.Crear
& nbsp & nbsp R. Evento := Button1Click // o cualquier TNotifyEvent
& nbsp & nbsp ListBox1.Elementos.AddObject('Button1Click', A)
fin
//llamar el evento
procedure TForm1.ListBox1Click(Sender: TObject)
begin
& nbsp & nbsp si ListBox1.ItemIndex<> -1, a continuación,
& nbsp & nbsp & nbsp & nbsp TEventObject(ListBox1.Elementos.Los Objetos[ListBox1.ItemIndex]).Evento(Auto)
fin
final.
(Para beginers sólo) si desea addapt este código a cualquier otro procedimiento, y/o los tipos de procedimiento, basta con cambiar las secciones en las que el cambio de estado de aquí. ¿Cómo funciona bastante fácil amigo crea un objeto cuyo único propósito es mantener el evento hasta que se le llama. En este caso, los objetos no son liberados en cualquier lugar, ya que era sólo una demostración en la vida real, usted tendrá que liberar a los objetos en algún lugar (onClose, OnCloseQuery de un formulario o en un destructor)
(Para criticist) En mi caso yo sólo quería una lista de eventos de una forma fija, ya sé que va a gritar que RTTI podría ser una mejor solución, tal vez lo es, pero no sé bien cómo RTTI funciona así que recurrí a un objeto para la realización del evento, y puesto que es perfectamente válido, tal vez la memoria adicional es que valga.









Añadir eventos a un tlist.


Añadir eventos a un tlist. : Multi-millones de consejos para hacer su vida mas facil.


la Adicion de un tipo de procedimiento a un TList, o TStringList
Aqui esta el codigo que he usado para lograrlo:
unit Unit1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,
& nbsp & nbsp StdCtrls
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp ListBox1: TListBox
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ListBox1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicacion
{$R *.DFM}
tipo
& nbsp & nbsp TEventObject = clase
& nbsp & nbsp protegido
& nbsp & nbsp & nbsp & nbsp //Cambio aqui (Para beginers solo)
& nbsp & nbsp & nbsp & nbsp FEvent: TNotifyEvent
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp //Cambio Aqui (Para beginers solo)
& nbsp & nbsp & nbsp & nbsp Evento de la propiedad: TNotifyEvent leer FEvent escribir FEvent

& nbsp & nbsp final
//Para agregar a la lista
procedure TForm1.Button1Click(Sender: TObject)
var a: TEventObject
begin
& nbsp & nbsp R := TEventObject.Crear
& nbsp & nbsp R. Evento := Button1Click // o cualquier TNotifyEvent
& nbsp & nbsp ListBox1.Elementos.AddObject('Button1Click', A)
fin
//llamar el evento
procedure TForm1.ListBox1Click(Sender: TObject)
begin
& nbsp & nbsp si ListBox1.ItemIndex<> -1, a continuacion,
& nbsp & nbsp & nbsp & nbsp TEventObject(ListBox1.Elementos.Los Objetos[ListBox1.ItemIndex]).Evento(Auto)
fin
final.
(Para beginers solo) si desea addapt este codigo a cualquier otro procedimiento, y/o los tipos de procedimiento, basta con cambiar las secciones en las que el cambio de estado de aqui. ¿Como funciona bastante facil amigo crea un objeto cuyo unico proposito es mantener el evento hasta que se le llama. En este caso, los objetos no son liberados en cualquier lugar, ya que era solo una demostracion en la vida real, usted tendra que liberar a los objetos en algun lugar (onClose, OnCloseQuery de un formulario o en un destructor)
(Para criticist) En mi caso yo solo queria una lista de eventos de una forma fija, ya se que va a gritar que RTTI podria ser una mejor solucion, tal vez lo es, pero no se bien como RTTI funciona asi que recurri a un objeto para la realizacion del evento, y puesto que es perfectamente valido, tal vez la memoria adicional es que valga.


Añadir eventos a un tlist.

Añadir eventos a un tlist. : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación