![]() |
Übergabe von Parameter an Proceduren in unterschiedlichen Units
Hallo Zusammen,
ich bin gerade auf dünnem Eis, weil ich mich mit dieser Art der Zuweisung nicht gut auskenne. Daher bitte ich Euch um Hilfe. Das Problem ist, dass ich einer Procedure Parameter aus einer anderen Übergeben möchte. Die beiden Proceduren sind nicht in der gleichen Unit, daher gestaltet sich der Aufruf wie folgt: Auslösende Unit:
Delphi-Quellcode:
In meiner Hauptunit sieht das Ganze dann so aus:
type
TEvent = procedure(Sender: TObject) of object; TFrame_Uebersicht = class(TFrame) ... private { Private-Deklarationen } FOnFilter: TEvent; public { Public-Deklarationen } property OnFilter: TEvent read FOnFilter write FOnFilter; end; implementation {$R *.dfm} procedure TFrame_Uebersicht.Grid_UebersichtClickCell(Sender: TObject; ARow, ACol: Integer); begin if (Assigned(FOnFilter)) and (ARow=1) then FOnFilter(Grid_Uebersicht); //An dieser Stelle möchte ich die Parameter ACol und ARow mit übergeben. end;
Delphi-Quellcode:
Ich hoffe, dass das Problem mit der Kommentierung im Code nachvollziehbar ist.
procedure TMain.FormCreate(Sender: TObject);
begin Frame_Uebersicht1.OnFilter:= Filter_Actions; end; procedure TMain.Filter_Actions(Sender: TObject); var SG: TAdvStringGrid; begin if Sender is TAdvStringGrid then begin SG:= Sender as TAdvStringGrid; Set_Filter(SG); //An diese Procedure möchte ich die Variablen ACol und ARow übergeben Apply_Filter(SG); end; end; Würde mich freuen, wenn jemand mir da die Zusammenhänge und Möglichkeiten zeigen würde. Vielen Dank Patrick |
AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units
Erweitere doch die Deklaration von Event:
Delphi-Quellcode:
TEvent = procedure(Sender: TObject; ARow, ACol: Integer) of object;
|
AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units
Hallo,
vielen Dank für den Hinweis!!! Ich habe es jetzt so probiert: Auslösende Unit:
Delphi-Quellcode:
In der Hauptunit:
type
TEvent = procedure(Sender: TObject) of object; TEvent_Filter = procedure (Sender: TObject; ACol,ARow: integer); TFrame_Uebersicht = class(TFrame) ... private { Private-Deklarationen } FOnFilter: TEvent_Filter; public { Public-Deklarationen } property OnFilter: TEvent_Filter read FOnFilter write FOnFilter; end; implementation {$R *.dfm} procedure TFrame_Uebersicht.Grid_UebersichtClickCell(Sender: TObject; ARow, ACol: Integer); begin if (Assigned(FOnFilter)) and (ARow=1) then FOnFilter(Grid_Uebersicht, ACol, ARow); end;
Delphi-Quellcode:
In der TMain.FormCreate wird ein Fehler ausgelöst:
procedure TMain.FormCreate(Sender: TObject);
begin Frame_Uebersicht1.OnFilter:= Filter_Actions; //hier wird ein Fehler ausgelöst end; procedure TMain.Filter_Actions(Sender: TObject; ACol, ARow: integer); var SG: TAdvStringGrid; begin if Sender is TAdvStringGrid then begin SG:= Sender as TAdvStringGrid; Set_Filter(SG); Apply_Filter(SG); end; end;
Delphi-Quellcode:
Kannst Du mir sagen, was ich falsch mache?
[DCC Fehler] MainUnit.pas(915): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'
Danke Patrick |
AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units
Ich vermute jetzt mal, das TEvent_Filter auch "of Object" braucht?
|
AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units
Da vermutest Du völlig korrekt.
|
AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units
Die sch... Flüchtigkeitsfehler!!!:wall:
Jetzt scheint es zu klappen. Vielen Dank Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 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