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 Ereigniss zur Laufzeit zuweisen ? (https://www.delphipraxis.net/16283-ereigniss-zur-laufzeit-zuweisen.html)

Urba 14. Feb 2004 11:39


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

Bobator 14. Feb 2004 11:55

Re: Ereigniss zur Laufzeit zuweisen ?
 
http://www.delphipraxis.com/topic152...fzeit+zuweisen

Urba 14. Feb 2004 11:59

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:

Bobator 14. Feb 2004 12:39

Re: Ereigniss zur Laufzeit zuweisen ?
 
hi,

ich kann mir nur schwer vorstellen, was du meinst. poste bitte ein wenig sourcecode.

Urba 14. Feb 2004 12:43

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.

neolithos 14. Feb 2004 12:45

Re: Ereigniss zur Laufzeit zuweisen ?
 
In welcher Klasse die Ereignis-Procedure steht ist eigentlicht egal!

Bobator 14. Feb 2004 12:47

Re: Ereigniss zur Laufzeit zuweisen ?
 
Delphi-Quellcode:
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
// Tue Irgendwas
end;

procedure zuweisen;
begin
  Image1.OnMouseDown:=ImageMouseDown;
end;
war es das was du meintest?

Urba 14. Feb 2004 12:51

Re: Ereigniss zur Laufzeit zuweisen ?
 
Aber wenn jetzt das Ereigniss OnDisplay wäre und ich folgende Prozeduren habe

Code:
procedure DisplayProcedure(Variablen ...);
begin
  //(...)
end;

procedure createkompo;
begin
  //(...)
  kompo.OnDisplay := DisplayProcedure;
end;
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%)

SirThornberry 14. Feb 2004 13:10

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...

Jens Schumann 14. Feb 2004 14:25

Re: Ereigniss zur Laufzeit zuweisen ?
 
Zitat:

Zitat von SirThornberry
Die procedure muss zu einer klasse gehören.

Falsch
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 04:18 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