Legge til hendelser til en TList.

Legge til en prosedyretype til en tListe, eller TStringListHere er koden jeg brukte for å få det til: enhet Unit1; interfaceuses Windows, Meldinger, SysUtils, Klasser, Grafikk, kontroller, skjemaer, dialogbokser, StdCtrls; skriver TForm1 = klasse (TForm) ListBox1: TListBox; Button1: TButton; Prosedyren Button1Click (Sender: TObject); Prosedyren ListBox1Click (Sender: TObject); private {felleserklæringer} offentlige {offentlige erklæringer} end; Var Form1: TForm1, gjennomføring {$ R * .DFM} skriver TEventObject = klasse beskyttet //Endre her (For beginers only) FEvent: TNotifyEvent; publisert //Endre Her (For beginers bare) eiendom Event: TNotifyEvent lese FEvent skrive FEvent; end; //Å legge til listprocedure TForm1.Button1Click (Sender: TObject); Var A: TEventObject, begynner A: = TEventObject.Create; A.Event: = Button1Click; //Eller TNotifyEvent ListBox1.Items.AddObject ( 'Button1Click', A); end; //Å kalle den eventprocedure TForm1.ListBox1Click (Sender: TObject); begynne hvis ListBox1.ItemIndex < > -1 Deretter TEventObject (ListBox1.Items.Objects [ListBox1.ItemIndex]) Hendelses (Selv);. Ende;. Slutt (For beginers) Hvis du ønsker å addapt denne koden til en annen prosedyre, og /eller prosedyretyper, bare endrer delene som statusendring her. Hvordan fungerer det, ganske enkelt venn det skaper et objekt der det eneste formålet er å holde arrangementet før kalt. I dette tilfellet objekter ikke blir frigjort noe sted, siden det var bare en demostration i det virkelige liv må du frigjøre objektene sted (onClose, OnCloseQuery av et skjema, eller i en destructor) (For criticist) I mitt tilfelle ville jeg bare en liste over hendelser av en fast form, jeg vet du vil hyle at RTTI kan være en bedre løsning, kanskje det er, men jeg vet godt hvordan det fungerer RTTI så jeg tydde til en gjenstand for å holde arrangementet, og siden det er helt gyldig, kanskje den ekstra minne er woth det.



Previous:
Next Page: