Wenn du es so macht sind es keine cirkulären bezüge und wenn du der omi die fernbedienung in einem rutsch erklärst weiss sie hinterher ger nix mehrWenn du es so machst, sind cirkuläre Bezüge sehr wohl erlaubt.

Das geht definitiv. Jedenfalls in einigen meiner Projekte.monta hat geschrieben:das muss gehen![]()
Code: Alles auswählen
unit unit1;
Interface
uses verschiedene, units, unit2; // <--- 1. Möglichkeit
//...
Code: Alles auswählen
//...
Implementation
uses unit2; //<---- 2. Möglichkeit
//...
Code: Alles auswählen
1.Unit(Form1):
unit mainunit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ExtCtrls, ExtDlgs, varunit1, subunit1, subunit2;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
...
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Image1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
tvar : string;
end;
var
Form1: TForm1;
idummy : integer;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
tvar:= 'Test Variable';
label1.caption:= tvar;
Form2.Show;
label2.caption:= tvar;
end;
Code: Alles auswählen
2.Unit(Form2):
unit subunit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
uses mainunit;
{ TForm2 }
procedure TForm2.FormCreate(Sender: TObject);
begin
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Form1.tvar:= 'Ende des Test';
close;
end;
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
tvar:string;
end;
var
Form1: TForm1;
implementation
uses unit2;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
tvar:= 'Test Variable';
label1.caption:= tvar;
Form2.Show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label2.caption:= tvar;
end;
initialization
{$I unit1.lrs}
end.
Code: Alles auswählen
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
uses unit1;
{ TForm2 }
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.tvar:= 'Ende des Test';
close;
end;
initialization
{$I unit2.lrs}
end.