![]() |
Ereigniss zur Laufzeit zuweisen ?
Hallo Leute,
Ich möchte einer Komponente ein Ereigniss erst zur Lauzeit zuordnen - wie kann ich das am besten realisieren. Also beispielsweise das OnMouseDown-Ereigniss einer TImage erst zuweisen nachdem irgendwas geschehen ist. Danke schonmal Urba |
Re: Ereigniss zur Laufzeit zuweisen ?
|
Re: Ereigniss zur Laufzeit zuweisen ?
Vielen Dank, aber muss die Prozedur denn unbedingt auf einer Form liegen. Dies war so bei allen Beispielen der Fall die ich gefunden habe. Ich erstelle eine Kompo zur Laufzeit als Prozedur innerhalb einer Unit und somit habe ich keine Form :roll:
|
Re: Ereigniss zur Laufzeit zuweisen ?
hi,
ich kann mir nur schwer vorstellen, was du meinst. poste bitte ein wenig sourcecode. |
Re: Ereigniss zur Laufzeit zuweisen ?
Es sind Komponenten ohne grafisches Interface (vielleicht war mein anfänglicher Text etwas verwirrend) und ich habe eine Variable abc in meiner Unit. In dieser Unit ist ebenfalls eine prozedur createkompo , welche dieser Kompo ihre Werte zuweist und sie erstellt.
Hoffe das ist etwas einleuchtender. |
Re: Ereigniss zur Laufzeit zuweisen ?
In welcher Klasse die Ereignis-Procedure steht ist eigentlicht egal!
|
Re: Ereigniss zur Laufzeit zuweisen ?
Delphi-Quellcode:
war es das was du meintest?
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin // Tue Irgendwas end; procedure zuweisen; begin Image1.OnMouseDown:=ImageMouseDown; end; |
Re: Ereigniss zur Laufzeit zuweisen ?
Aber wenn jetzt das Ereigniss OnDisplay wäre und ich folgende Prozeduren habe
Code:
Dann funktioniert es nicht. Ich bekomme die Meldung "Incompatible types : 'method pointer and regular procedure'". Es liegt aber definitiv nicht an den Variablen, dass ich dort eine vergessen hätte oder so (100%)
procedure DisplayProcedure(Variablen ...);
begin //(...) end; procedure createkompo; begin //(...) kompo.OnDisplay := DisplayProcedure; end; |
Re: Ereigniss zur Laufzeit zuweisen ?
Die procedure muss zu einer klasse gehören. Denn wie der Compiler schon rummeckert ist es sonst eine procedure und kein Pointer. Erst wenn du eine instanz von deiner klasse erstellt hast wird die procedure auch im speicher verfügbar sein...
|
Re: Ereigniss zur Laufzeit zuweisen ?
Zitat:
Der folgende Source tritt den Beweis an.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure ImageOnClickEvent(Sender : TObject); begin ShowMessage('Auf TImage geklickt'); end; procedure TForm1.FormCreate(Sender: TObject); var aImage : TImage; begin aImage:=TImage.Create(Self); aImage.Parent:=Self; aImage.Top:=20; aImage.Left:=20; With aImage.Picture.Bitmap do begin Width:=aImage.Width; Height:=aImage.Height; Canvas.Rectangle(0,0,Width,Height); end; @aImage.OnClick:=@ImageOnClickEvent; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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