Einzelnen Beitrag anzeigen

I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#1

TPageControl -> EInvalidOperation -> kein übergeord. F

  Alt 22. Apr 2009, 16:52
Hallo!

Bitte entschuldigt die blöde Frage, aber ich hab keine Ahnung, wa sich falsch gemacht habe!

Ich will zur Laufzeit eine Seite in ein TPageControl einfügen, das ich ebenso zur Laufzeit erzeuge.

Dabei kriege ich in der Methode AddPage die genannte Exception. Der Debugger beleibt auf der Anweisung "PageControl = self stehen".

Delphi-Quellcode:
type
  TDialogRegisterPage = class (TTabSheet)
     constructor Create(AOwner: TComponent);
  end;

  TDialogRegister = class(TPageControl)
     constructor Create(AOwner: TComponent);
     procedure AddPage(const AName: String);
  end;

constructor TDialogRegisterPage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FControl := TAnyControl.Create(self);
  FControl.Parent := self;
  FControl.Align := alClient;
end;


procedure TDialogRegister.AddPage(const AName: String);
var Page: TDialogRegisterPage;
begin
  with TDialogRegisterPage.Create(self) do
  begin
    Caption := AName;
    PropKinds := APropKinds;
    Parent := self;
    PageControl := self;
  end;
end;

constructor TDialogRegister.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  AddPage('Titel1');
  AddPage('Titel2');
end;

-----------------------------

type
  TForm1 = class(TForm)
    ...
    procedure FormCreate(Sender: TObject);
    ...
   private
    MyDlgRegisters: TDialogRegister;
   public
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyDlgRegisters := TDialogRegister.Create(self);
  with MyDlgRegisters do
  begin
    Left := 0;
    Top := 0;
    Width := 185;
    Height := 289;
  end;
  MyDlgRegisters.Parent := self;
end;
Wer kann mir sagen, was ich in meiner betriebsblindheit übersehen habe?
  Mit Zitat antworten Zitat