Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Dynamische Events? (https://www.delphipraxis.net/27501-dynamische-events.html)

silent vapor 11. Aug 2004 09:40


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

Bernhard Geyer 11. Aug 2004 09:42

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;

Stevie 11. Aug 2004 09:44

Re: Dynamische Events?
 
Delphi-Quellcode:
Form1 = class(TForm)
private
  procedure MeinOnClickEvent(Sender: TObject);
end;

...

NeuerButton.OnClick := MeinOnClickEvent;
P.S. Zu lahm... :wall:

silent vapor 11. Aug 2004 10:29

Re: Dynamische Events?
 
danke für die antworten.
er macht das aber dann auch nur, wenn ich den Button klicke ?

Bernhard Geyer 11. Aug 2004 10:31

Re: Dynamische Events?
 
Ja. Der Caption des Buttons wird nur geändert wenn er auch gedrückt wurde.

P.S. Wieder Schneller :lol:

Stevie 11. Aug 2004 10:31

Re: Dynamische Events?
 
Zitat:

Zitat von silent vapor
danke für die antworten.
er macht das aber dann auch nur, wenn ich den Button klicke ?

Genau, nur für die Buttons, bei denen du das OnClick zugewiesen hast.

P.S. Aaargh, heute is nicht mein Tag... :evil:

silent vapor 11. Aug 2004 10:59

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?

Stevie 11. Aug 2004 11:07

Re: Dynamische Events?
 
Die Methode, die du zuweist, muss in der Klasse deklariert werden!

Falsch:
Delphi-Quellcode:
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;
Richtig:
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;

silent vapor 11. Aug 2004 11:13

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;

Stevie 11. Aug 2004 11:24

Re: Dynamische Events?
 
Weil die Parameter nicht stimmen! Guck mal bei mir...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz