![]() |
Dynamische Events?
Hi ihr,
hab flogendes Problem, und zwar möchte ich ein Event zu einer zur Laufzeit erstellten Komponente erstellen. WIe mache ich das? Ich erstelle zur Laufzeit mehrere Komponenten zB Buttons. Kann ich jetzt irgendwie in das onlick ereignis des jeweiligen Buttons kommen? So zB wenn Button geclickt, dann caption anders? Thx mfg silent vapor |
Re: Dynamische Events?
Delphi-Quellcode:
TMyForm = ...
private procedure OnMyButtonClick(Sender: TObject); .... TMyForm.MyFunction(...) begin MeinDynamischerButton.OnClick := OnMyButtonClick; end; TMyForm.OnMyButtonClick(Sender: TObject); begin if Sender is TButton then (Sender as TButton).Caption := 'Neue Caption'; end; |
Re: Dynamische Events?
Delphi-Quellcode:
P.S. Zu lahm... :wall:
Form1 = class(TForm)
private procedure MeinOnClickEvent(Sender: TObject); end; ... NeuerButton.OnClick := MeinOnClickEvent; |
Re: Dynamische Events?
danke für die antworten.
er macht das aber dann auch nur, wenn ich den Button klicke ? |
Re: Dynamische Events?
Ja. Der Caption des Buttons wird nur geändert wenn er auch gedrückt wurde.
P.S. Wieder Schneller :lol: |
Re: Dynamische Events?
Zitat:
P.S. Aaargh, heute is nicht mein Tag... :evil: |
Re: Dynamische Events?
Mhh hab dsa jetzt versucht, leuchtet mir auch ein.
Nur hab dsa mit ner TWebBrowser Komponente gemacht, die sich wärend der Laufzeit erstellt und wollte das Event Ontitlechange dynamisch erstellen. Jetzt kommt der fehler bei der Eventzuordnung: Incompatible Types: 'method pointer and regular procedure' Was mache ich falsch? |
Re: Dynamische Events?
Die Methode, die du zuweist, muss in der Klasse deklariert werden!
Falsch:
Delphi-Quellcode:
Richtig:
type
TForm1 = class(TForm) WebBrowser1: TWebBrowser; procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure WebBrowser1TitleChange(Sender: TObject; const Text: WideString); begin // Irgendwas ... end; procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.OnTitleChange := WebBrowser1TitleChange; end;
Delphi-Quellcode:
type
TForm1 = class(TForm) WebBrowser1: TWebBrowser; procedure FormCreate(Sender: TObject); private procedure WebBrowser1TitleChange(Sender: TObject; const Text: WideString); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WebBrowser1TitleChange(Sender: TObject; const Text: WideString); begin // Irgendwas ... end; procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.OnTitleChange := WebBrowser1TitleChange; end; |
Re: Dynamische Events?
Hab ich ja:
Delphi-Quellcode:
type
private procedure onmytitleload(Sender: TObject); end; ... procedure onmytitleload(Sender: TObject); begin if Sender is TWebBrowser then begin //mach irgendwas end; end; procedure browsererstellen; var wb : TWebbrowser; begin wb := TWebBrowser.Create(Form1); wb.OnTitleChange := onmytitleload; // <<< Hier tritt ein Fehler auf end; |
Re: Dynamische Events?
Weil die Parameter nicht stimmen! Guck mal bei mir...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 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-2025 by Thomas Breitkreuz