Ajout d'événements pour une tlist.


l'Ajout d'une procédure type pour une TList, ou TStringList
Voici le code que j'ai utilisé pour l'atteindre:
unit Unit1
interface

& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
& nbsp & nbsp StdCtrls
type
& nbsp & nbsp TForm1 = class(TForm)
& ! & ! & ! & nbsp ListBox1: TListBox
& ! & ! & ! & nbsp Button1: TButton
& ! & ! & ! & nbsp procédure Button1Click(Sender: TObject)
& ! & ! & ! & nbsp procédure ListBox1Click(Sender: TObject)
& nbsp & nbsp privé
& ! & ! & ! & nbsp { Private declarations }
& nbsp & nbsp public
& ! & ! & ! & nbsp { déclarations Publiques }
& nbsp & nbsp fin
var
& nbsp & nbsp Form1: TForm1
application
{$R *.DFM}
type
& nbsp & nbsp TEventObject = classe
& nbsp & nbsp protégé
& ! & ! & ! & nbsp //Changement (Pour beginers uniquement)
& ! & ! & ! & nbsp FEvent: TNotifyEvent
& nbsp & nbsp publié
& ! & ! & ! & nbsp //Changement (Pour beginers seulement)
& ! & ! & ! & nbsp propriété d'Événement: TNotifyEvent lire FEvent écrire FEvent

& nbsp & nbsp fin
//Pour ajouter à la liste
procedure TForm1.Button1Click(Sender: TObject)
var A: TEventObject
begin
& nbsp & nbsp A := TEventObject.Créer
& nbsp & nbsp A. de l'Événement := Button1Click // ou tout TNotifyEvent
& nbsp & nbsp ListBox1.Éléments.AddObject('Button1Click', A)
fin
//Pour appeler l'événement
procedure TForm1.ListBox1Click(Sender: TObject)
begin
& nbsp & nbsp si ListBox1.ItemIndex<> -1 then
& ! & ! & ! & nbsp TEventObject(ListBox1.Éléments.Les Objets[ListBox1.ItemIndex]).Événement(Auto)
fin
à la fin.
(Pour beginers uniquement) si vous souhaitez addapt le présent code à toute autre procédure et/ou les types de procédure, il suffit de modifier les sections de ce changement d'état ici. Comment ça fonctionne, assez simple ami, il crée un objet dont le seul but est de tenir l'événement jusqu'à l'appelé. Dans ce cas, les objets ne sont pas libérés n'importe où, puisque c'était juste une démonstration dans la vraie vie, vous devrez libérer les objets quelque part (onClose, OnCloseQuery d'un formulaire, ou dans un destructeur)
(Pour la critique) Dans mon cas, je voulais juste une liste des événements d'une forme fixe, je sais que vous allez crier que RTTI pourrait être une meilleure solution, c'est peut-être, mais je ne sais pas bien comment RTTI fonctionne donc j'ai eu recours à un objet à la tenue de l'événement et depuis qu'il est tout à fait valide, peut-être la mémoire supplémentaire est avec elle.









Ajout d'evenements pour une tlist.


Ajout d'evenements pour une tlist. : Plusieurs milliers de conseils pour vous faciliter la vie.


l'Ajout d'une procedure type pour une TList, ou TStringList
Voici le code que j'ai utilise pour l'atteindre:
unit Unit1
interface

& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
& nbsp & nbsp StdCtrls
type
& nbsp & nbsp TForm1 = class(TForm)
& ! & ! & ! & nbsp ListBox1: TListBox
& ! & ! & ! & nbsp Button1: TButton
& ! & ! & ! & nbsp procedure Button1Click(Sender: TObject)
& ! & ! & ! & nbsp procedure ListBox1Click(Sender: TObject)
& nbsp & nbsp prive
& ! & ! & ! & nbsp { Private declarations }
& nbsp & nbsp public
& ! & ! & ! & nbsp { declarations Publiques }
& nbsp & nbsp fin
var
& nbsp & nbsp Form1: TForm1
application
{$R *.DFM}
type
& nbsp & nbsp TEventObject = classe
& nbsp & nbsp protege
& ! & ! & ! & nbsp //Changement (Pour beginers uniquement)
& ! & ! & ! & nbsp FEvent: TNotifyEvent
& nbsp & nbsp publie
& ! & ! & ! & nbsp //Changement (Pour beginers seulement)
& ! & ! & ! & nbsp propriete d'Evenement: TNotifyEvent lire FEvent ecrire FEvent

& nbsp & nbsp fin
//Pour ajouter a la liste
procedure TForm1.Button1Click(Sender: TObject)
var A: TEventObject
begin
& nbsp & nbsp A := TEventObject.Creer
& nbsp & nbsp A. de l'Evenement := Button1Click // ou tout TNotifyEvent
& nbsp & nbsp ListBox1.Elements.AddObject('Button1Click', A)
fin
//Pour appeler l'evenement
procedure TForm1.ListBox1Click(Sender: TObject)
begin
& nbsp & nbsp si ListBox1.ItemIndex<> -1 then
& ! & ! & ! & nbsp TEventObject(ListBox1.Elements.Les Objets[ListBox1.ItemIndex]).Evenement(Auto)
fin
a la fin.
(Pour beginers uniquement) si vous souhaitez addapt le present code a toute autre procedure et/ou les types de procedure, il suffit de modifier les sections de ce changement d'etat ici. Comment ça fonctionne, assez simple ami, il cree un objet dont le seul but est de tenir l'evenement jusqu'a l'appele. Dans ce cas, les objets ne sont pas liberes n'importe ou, puisque c'etait juste une demonstration dans la vraie vie, vous devrez liberer les objets quelque part (onClose, OnCloseQuery d'un formulaire, ou dans un destructeur)
(Pour la critique) Dans mon cas, je voulais juste une liste des evenements d'une forme fixe, je sais que vous allez crier que RTTI pourrait etre une meilleure solution, c'est peut-etre, mais je ne sais pas bien comment RTTI fonctionne donc j'ai eu recours a un objet a la tenue de l'evenement et depuis qu'il est tout a fait valide, peut-etre la memoire supplementaire est avec elle.


Ajout d'événements pour une tlist.

Ajout d'événements pour une tlist. : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation