![]() |
Prozeduren aus einer 2. Unit nutzten
Hi,
ich schreibe gerade ein Programm, in dem ich einige procedures in eine 2. Unit auslager. in der 2. Unit werden diese in eine Klasse gepackt, damit sie auch Ereignissen zugeordnet werden können (hier OnMouseEnter und Leave; das sollte aber eher nebensächlich sein). will ich nun allerdings einem Ereigniss eine Procedure zuordnen kommt die Fehlermeldung "Undefinierter Bezeichner". ich habe die 2. Unit auch schon in die uses eingebunden! wieso erkennt er die denn dann nicht??? procedures in der 2. Unit (gekürzt):
Delphi-Quellcode:
Aufruf in der 1. Unit:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, unit1, Dialogs, ExtCtrls, StdCtrls, Menus, ComCtrls, Buttons, Grids, ImgList, Registry; type Auswaehlen = class(TObject) procedure auswahl0leave(Sender: TObject); ... end; var auswahl: Array of Timage; implementation procedure Auswaehlen.auswahl0leave(Sender: TObject); begin form1.Statusbar.Panels[0].Text:= 'Fertig'; form1.Statusbar.Panels[2].Text:= ''; auswahl[0].Transparent:=true; auswahl[0].OnClick:= form1.MachWas; end; end.
Delphi-Quellcode:
was vielleicht noch gesagt werden sollte, dass ist das erste mal das ich in andere Units auslager, deshalb habe ich da noch nicht so viel erfahrung mit, also bitte auch nicht so komliziert erklären.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, ComCtrls, Buttons, Grids, ImgList, Registry; type TForm1 = class(TForm) MainMenu1: TMainMenu; end; implementation uses unit2; procedure TForm1.NotenAuswahlEnter(Sender: TObject); begin ton[0].Parent := ScrollBox1; ton[0].OnMouseEnter := auswahl0enter; // <-- hier kommt der Fehler ton[0].OnMouseLeave := auswahl0leave; // <-- hier auch end; end. schon mal danke im Voraus Andi |
Re: Prozeduren aus einer 2. Unit nutzten
Weil "ton" vielleicht kein Objekt der Klasse Auswaehlen ist?
|
Re: Prozeduren aus einer 2. Unit nutzten
muss es das denn sein?? weil "ton" ist ein wärend der laufzeit erstelltes TImage, wenn es rein muss, muss ich es dann wie "auswahl: Array of Timage" einbinden?
naja ich probiers mal, schonmal danke für die schnell antwort |
Re: Prozeduren aus einer 2. Unit nutzten
Zitat:
|
Re: Prozeduren aus einer 2. Unit nutzten
so, ich hab jetzt mal die 2. unit in public, etc. unterteilt, das hat allerdings nichts geholfen, immer noch der gleiche fehler. Auch mit "ton[0].OnMouseEnter := Auswaehlen.auswahl0enter;" hat sich nur der Fehler geändert xD. jetzt ist es nicht mehr der Fehler "Undefinierter Bezeichner" sondern
Zitat:
Zitat:
grüße Andi |
Re: Prozeduren aus einer 2. Unit nutzten
Zitat:
IMHO werden Klassenmethoden ohne besondere Zuteilung als Published interpretiert. Zitat:
|
Re: Prozeduren aus einer 2. Unit nutzten
das mit methodenzeiger hab ich auch schon mal gesucht, aber ich hab nichts gefunden was ich verstanden hab, bzw. was bei mir funktioniert hat, deshalb habe ich extra diese Frage gestellt, umherauszufinden, wie das geht.
So langsam verzweifel ich noch, kann mir nicht jemand einfach sagen, wie ich eine procedure aus einer anderen unit einem event zuordne? Grüße Andi |
Re: Prozeduren aus einer 2. Unit nutzten
gibts denn keinen hier in der ganzen DP der mir weiterhelfen kann?
|
Re: Prozeduren aus einer 2. Unit nutzten
TNotifyEvent ist eine Methode. Das heißt, du musst bei der Zuweisung an ein onSowieso auch eine Instanz übergeben, also:
Delphi-Quellcode:
Hoffe geholfen zu haben
MeinDummy:=Auswaehlen.create;
auswahl[0].OnClick:=MeinDummy.auswahl0leave; MeinDummy.free; //Erst ganz am Ende (in der Finalization), sonst gibts eine Zugriffsverletzung! Apollonius |
Re: Prozeduren aus einer 2. Unit nutzten
Zitat:
wenn ich richtig verstanden habe ist ton[0] ein TImage. Ein Standard TImage hat bei mir jedoch keinen Event OnMouseEnter, mich hätte mal interessiert wie bei dir der Prozedurkopf von OnMouseEnter und dein jetziger Code aussieht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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