Hi,
ich habe versucht die Komplexität zu reduzieren und beschränke mich auf drei Forms.
Form14 erzeugt Form15 und dieses Form16.
Form15 kann auf Form14 zugreifen, Form16 jedoch nicht auf Form15. Form15 und Form16
wurden nach dem gleichen Prinzip erzeugt. Auch das Auskommentieren der Änderung
des Parent bei Form15 half nicht, ich erhalte eine Zugriffsverletzung.
Da liegt bestimmt ein Denkfehler vor!
LG
Dirk
Delphi-Quellcode:
unit Unit14;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm14 =
class(TForm)
btn1: TButton;
lbl1: TLabel;
pgc1: TPageControl;
ts1: TTabSheet;
procedure btn1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form14: TForm14;
implementation
uses Unit15;
{$R *.dfm}
procedure TForm14.btn1Click(Sender: TObject);
var
test: TForm15;
begin
test:= TForm15.Create(self);
test.Parent:= ts1;
test.Show;
end;
end.
Delphi-Quellcode:
unit Unit15;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit14, StdCtrls;
type
TForm15 =
class(TForm)
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form15: TForm15;
implementation
uses Unit16;
{$R *.dfm}
procedure TForm15.btn1Click(Sender: TObject);
begin
Form14.lbl1.Caption:='
Test';
Form14.Caption:= '
Test';
end;
procedure TForm15.btn2Click(Sender: TObject);
var
test2: TForm16;
begin
test2:= TForm16.Create(self);
test2.Show;
end;
end.
Delphi-Quellcode:
unit Unit16;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm16 =
class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form16: TForm16;
implementation
uses Unit15;
{$R *.dfm}
procedure TForm16.btn1Click(Sender: TObject);
begin
Form15.Caption:='
Test';
//löst keinen Fehler aus, macht aber nichts!
Form15.btn2.Caption:='
Test';
//hier bekomme ich eine Zugriffsverletzung
end;
end.