Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Zyklusproblem ( Circular reference )

  Alt 23. Apr 2007, 20:42
Zitat von DGS:
Und glaub, ich weis jetzt, was du meintest. In der Unit1. wird ja eine globale Variable Form1 deklariert.
*auf Kopf klatsch*
Dann reicht ja Unit1 in implementation aus und greif auf diese Variable zu.
Darf ich nochmal nachschlagen, damit's wenigstens bischen weh tut

Hast du nicht in deinem ersten Beitrag was von OO Programmierung geschrieben
Dann solltest du aber wissen, dass man nicht unbedingt auf Instanzen direkt zugreifen soll. Was, wenn du plötzlich 2 Forms vom Typ TForm1 offen hast. Zugegeben, das ist in dem Beispiel eher unwahrscheinlich. Aber TForm1 könnte ja auch eine andere Klasse sein, von der du unterschiedliche Instanzen erzeugst.
In Unit2 (bzw. in TForm2 oder was auch immer) willst du auf Eigenschaften und Methoden von TForm1 zugreifen. Also übergib gefälligst eine Instanz von TForm1 im Konstruktor von TForm2.
Ich hoff, du verstehst was ich schreibe.

Und um deinem zirkulärem Problem aus dem Weg zu gehen, deklariere den constructor von TForm2 so:

Delphi-Quellcode:
unit SubUnit;

interface

uses
  forms;

type
  tHelp = class
  private
    fvater : tForm;
  public
    constructor Create(vater : TForm)
  end;

implementation
uses unit1 ;

constructor tHelp.Create(vater : TForm);
begin
  assert ( vater is TForm, 'Parameter Vater con tHel.Create muss vom Type TForm1 sein.') ;
  inherited Create;

  fVater := vater;

  // irgendwas mit fVater machen
  with fVater as TForm1 do begin
  // ...
  end ;
end;

end.
  Mit Zitat antworten Zitat