AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriff auf Prozeduren anderer Units/Formen
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Prozeduren anderer Units/Formen

Ein Thema von Hans-Wurst2 · begonnen am 18. Dez 2005 · letzter Beitrag vom 18. Dez 2005
Antwort Antwort
Hans-Wurst2

Registriert seit: 15. Dez 2005
6 Beiträge
 
#1

Zugriff auf Prozeduren anderer Units/Formen

  Alt 18. Dez 2005, 19:37
Hi,
meine Frage ist ob ich aus Unit/Form 2 auf eine Procedure von Unit/Form 1 zugreifen kann und wie das funktioniert!?

Danke.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Zugriff auf Prozeduren anderer Units/Formen

  Alt 18. Dez 2005, 19:58
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
  Mit Zitat antworten Zitat
Hans-Wurst2

Registriert seit: 15. Dez 2005
6 Beiträge
 
#3

Re: Zugriff auf Prozeduren anderer Units/Formen

  Alt 18. Dez 2005, 20:05
ich möchte einfach eine Prozedur die ich in der einen Form habe auch in der anderen Aufrufen können.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Zugriff auf Prozeduren anderer Units/Formen

  Alt 18. Dez 2005, 20:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#5

Re: Zugriff auf Prozeduren anderer Units/Formen

  Alt 18. Dez 2005, 20:17
Delphi-Quellcode:
// Unit 2

implementation

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

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  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 21:32 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