![]() |
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. |
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:
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.
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; 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 |
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.
|
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. |
Re: Zugriff auf Prozeduren anderer Units/Formen
Delphi-Quellcode:
Gruß,
// Unit 2
implementation uses Unit 1; // <- hinzufügen 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