AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Übergabe von Parameter an Proceduren in unterschiedlichen Units
Thema durchsuchen
Ansicht
Themen-Optionen

Übergabe von Parameter an Proceduren in unterschiedlichen Units

Ein Thema von Ykcim · begonnen am 22. Okt 2014 · letzter Beitrag vom 22. Okt 2014
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 14:59
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:
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;
In meiner Hauptunit sieht das Ganze dann so aus:
Delphi-Quellcode:
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;
Ich hoffe, dass das Problem mit der Kommentierung im Code nachvollziehbar ist.

Würde mich freuen, wenn jemand mir da die Zusammenhänge und Möglichkeiten zeigen würde.

Vielen Dank
Patrick
Patrick

Geändert von Ykcim (22. Okt 2014 um 15:22 Uhr) Grund: Verdeutlicht das Problem
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#2

AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 15:25
Erweitere doch die Deklaration von Event:

TEvent = procedure(Sender: TObject; ARow, ACol: Integer) of object;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 15:38
Hallo,

vielen Dank für den Hinweis!!!

Ich habe es jetzt so probiert:

Auslösende Unit:
Delphi-Quellcode:
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;
In der Hauptunit:

Delphi-Quellcode:
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;
In der TMain.FormCreate wird ein Fehler ausgelöst:
[DCC Fehler] MainUnit.pas(915): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger' Kannst Du mir sagen, was ich falsch mache?

Danke
Patrick
Patrick
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 15:48
Ich vermute jetzt mal, das TEvent_Filter auch "of Object" braucht?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 15:51
Da vermutest Du völlig korrekt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Übergabe von Parameter an Proceduren in unterschiedlichen Units

  Alt 22. Okt 2014, 15:53
Die sch... Flüchtigkeitsfehler!!!

Jetzt scheint es zu klappen.

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
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