![]() |
Eventprocedur bei virtuellen Objekten
Hallo Zusammen,
wenn ich einen Button auf ein Formular ziehe, dann habe ich in dem Objektinspektor unter Ereignisse einige Procedure, die bei einem Event ausgeführt werden, z.B. onClick. Ich habe jetzt in einer Unit ohne Formular ein Objekt created und möchte gerne eine der Eventproceduren verwenden. Es handelt sich nicht um einen Button, sondern um eine TAdvGirdExcel Komponente. Aber vielleicht bleiben wir der Einfachheit halber bei einem Button. Wenn ich den jetzt virtuel erzeuge, wie kann ich ihm die Eventprocedure onClick zuweisen? Vielen Dank Patrick |
AW: Eventprocedur bei virtuellen Objekten
Zitat:
Das was du meinst nennt sich "dynamisch erstellen", also quasi manuell. Es gibt das Property
Delphi-Quellcode:
und dem weist du deine Methode zu (
DeineKomponente.OnClick
Delphi-Quellcode:
).
x.OnEvent := EventMethode;
|
AW: Eventprocedur bei virtuellen Objekten
Delphi-Quellcode:
MyNewButton := TButton.Create( ... );
MyNewButton.OnClick := MyVeryFineButtonClickMethod; |
AW: Eventprocedur bei virtuellen Objekten
Also, erstens ist der nicht virtuell erzeugt, sondern wirklich und wahrhaftig da, nur eben (jetzt kommt der korrekte Fachausdruck) dynamisch erzeugt.
Nun zur eigentlichen Frage: Du kannst einem Event wie zB
Delphi-Quellcode:
ganz einfach jede Methode zuweisen, die die korrekte Signatur hat. In diesem Fall
Button.OnClick
Delphi-Quellcode:
. Was zu
procedure BeleibigerName(Sender:TObject);
Delphi-Quellcode:
wird.
Button.OnClick := BeleibigerName;
Sherlock |
AW: Eventprocedur bei virtuellen Objekten
WOW!!! Vielen Dank für die schnellen und guten Antworten. So wird es klappen, habe noch ein paar Probleme mit den Parametern([DCC Fehler] TExcelExportUnit.pas(233): E2010 Inkompatible Typen: 'tmsUFlxFormats.TFlxFormat' und '_UFlxFormats.TFlxFormat.TFlxFormat'), die ich aber hoffentlich alleine gelöst bekomme.
Vielen Dank Patrick |
AW: Eventprocedur bei virtuellen Objekten
Öhm... nö, es darf keine reguläre Prozedur, sondern muss eine Methode sein. Zur Not muss man sich eben eine Dummy-Klasse erstellen, die diese Methode dann implementiert.
|
AW: Eventprocedur bei virtuellen Objekten
Zitat:
Über das bin ich auch schon mal geflogen - aber theoretisch könnt das doch egal sein, ob es eine reguläre Prozedur oder eine Methode ist |
AW: Eventprocedur bei virtuellen Objekten
Zitat:
Delphi-Quellcode:
deklariert ist, dann muss es eine Methode sein.
TFooEvent = procedure ... of object;
Bei den neueren Delphis könnte man auch
Delphi-Quellcode:
nehmen, dann frisst der alles, bis auf den OI, der wird da wohl nicht mitspielen.
TFooEvent = reference to procedure ...;
|
AW: Eventprocedur bei virtuellen Objekten
D. h. einzig die Definition ist "schuld" daran?
|
AW: Eventprocedur bei virtuellen Objekten
Hallo Zusammen,
ich habe es jetzt umgesetzt bekommen. Ich musste tatsächlich eine DummyKlasse erstellen und einbinden, weil zwei TMS-Klassen in ein und derselben Unit nicht vertrugen. Zwei Mal den gleichen Namen für unterschiedliche Typen... Aber jetzt klappt es. Danke Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz