Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriff auf Prozeduren anderer Units/Formen (https://www.delphipraxis.net/59171-zugriff-auf-prozeduren-anderer-units-formen.html)

Hans-Wurst2 18. Dez 2005 18:37


Zugriff auf Prozeduren anderer Units/Formen
 
Hi,
meine Frage ist ob ich aus Unit/Form 2 auf eine Procedure von Unit/Form 1 zugreifen kann und wie das funktioniert!?

Danke.

Der_Unwissende 18. Dez 2005 18:58

Re: Zugriff auf Prozeduren anderer Units/Formen
 
Hi,
es gibt eine sehr einfache Möglichkeit, die ich aber bewußt nicht nennen werde (hat was mit über kreuz Einbinden zu tun).
Wenn du in TForm2 auf Methoden der Klasse TForm1 zugreifen möchtest und umgekehrt, solltest du überlegen ob es nicht Alternativen gibt.
Was genau möchtest du denn machen?
Wichtig ist, nur Form1 braucht Form2 zu kennen (geh mal davon aus, dass Form1 dein Hauptformular ist und Form2 anzeigt). Wenn du ein Element von Form1 bearbeiten möchtest (z.B. ein Image auf Form1 in Form2 ändern), dann solltest du dieses Element einfach als Referenz übergeben.

Also als Beispiel:
Delphi-Quellcode:
procedure Form2.zeichneAufEinImage(const Image : TImage);
begin
  if assigned(Image) then
    begin
      // mache irgendwas mit dem Image
    end;
end;

// und der Aufruf in Form1 
procedure Form1.foo;
begin
  Form2.zeichneAufEinImage(self.Image1); // übergibt das Image1 vom Form1
end;
Wenn du nur etwas berechnest und einen Wert setzen möchtest, kannst du auch Variablen als Referenz (bzw. per Value-Result) übergeben indem du ein var vor die Variable schreibst.

Hoffe es hilft dir schon etwas weiter. Da ich nicht genau weiß was du machen möchtest belasse ich es mal erstmal dabei. Gibt aber noch viele Möglichkeiten wie Funktionszeiger und Interfaces.

Gruß Der Unwissende

Hans-Wurst2 18. Dez 2005 19:05

Re: Zugriff auf Prozeduren anderer Units/Formen
 
ich möchte einfach eine Prozedur die ich in der einen Form habe auch in der anderen Aufrufen können.

Der_Unwissende 18. Dez 2005 19:15

Re: Zugriff auf Prozeduren anderer Units/Formen
 
Die Frage ist eher, was macht diese Prozedur genau?
Wenn es nur eine Prozedur ist, die nichts mit speziellen Elementen der Forms zu tun hat, dann lager sie aus. Wenn du also zum Beispiel, keine Ahnung, den Rabin-Karp-Algorithmus in beiden Forms benutzen willst (String-Matching), dann schreib dir eine neue Unit und füge dort die Prozedur ein. Dann bindest du die in beiden Form-Units ein.

Geht natürlich auch mit etwas sinnvollerem (also gut, auch Rabin-Karp ist sinnvoll, aber halt hier nicht, ist mir nur gerade eingefallen). Sagen wir du hast einen Algorithmus, der einen speziellen Baum in ein Image zeichnet, dann kannst du das genau so auslagern, nur hat deine Methode dann als ein Parameter ein TImage und da übergibst du dann immer das des jeweiligen Form und der zeichnet da rein.

Für die meisten Fälle, wenn beide Forms Methoden der jeweils anderen aufrufen, spricht es eher für einen Fehler im Design der Klassen. Man sollte es tunlichst vermeiden zwei Forms von einander abhängig zu machen. Ist einfach unsauber und bringt dir ganz schnell Probleme.

ManuMF 18. Dez 2005 19:17

Re: Zugriff auf Prozeduren anderer Units/Formen
 
Delphi-Quellcode:
// Unit 2

implementation

uses Unit 1; // <- hinzufügen
Gruß,
ManuMF


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 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