Einzelnen Beitrag anzeigen

Piethan

Registriert seit: 2. Jun 2008
Ort: Köln
43 Beiträge
 
Delphi XE Architect
 
#4

AW: Zugriffsverletzung bei umgebogen Parent des Fensters

  Alt 25. Mär 2011, 15:19
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.
Angehängte Dateien
Dateityp: zip Project12.zip (552,7 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat