Einzelnen Beitrag anzeigen

tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

Element hat kein übergeordnetes Fenster

  Alt 27. Feb 2012, 07:58
Hallo,
ich erhalte folgende Fehlermeldung in einer ganz speziellen Situation, mit der ich nichts anfangen kann:

Im Projekt ist eine Exception der Klasse EInvalidOperation mit der Meldung 'Element " hat kein übergeordnetes Fenster' aufgetreten

Folgende Situation:

Es gibt ein TTabControl mit mehreren Reitern. Wenn der letzte Reiter angeklickt wird, wird dynamisch ein oder mehrere TStringGrid's erzeugt. Außerdem gibt es dort ein
Code:
class var GridMenu: TPopUpActionBar;
Code:
constructor TListenAnsicht.Create(AOwner: TComponent);
  var Item:TMenuItem;
  begin
    inherited;
    if not assigned(GridMenu) then
    begin
      GridMenu:=TPopUpActionBar.Create(nil);
    ......
Das wird den TStringGrid's zugewiesen.

Der Fehler kommt nun so zu Stande. Ich öffne mit Rechtsklick das Menü und lasse es offen. Dann wechsel ich den Reiter vom TTabControl....und dann kommt der Fehler.

Beim Tabwechsel läuft das hier ab
Code:
procedure TForm1.TabControlViewsChange(Sender: TObject);
begin
  ActualTermin:=nil;
  wechselTabEbene1(TabControlViews.TabIndex);
  sleep(0); // -> Breakpoint zum Testen
end; // --> Fehler kommt NACH sleep
Der Fehler kommt NUR, wenn ich das Menü beim Tabwechsel geöffnet lasse.
Was noch wichtig ist, in der tiefe des Codes, wird durch den Tabwechsel veranlasst auch der Inhalt vom Tab 'aufgeräumt'.
Code:
destructor TListenAnsicht.Destroy;
  begin
    if Assigned(GridMenu) then
    begin
      GridMenu.CloseMenu;
      FreeAndNil(GridMenu);
    end;
    inherited Destroy;
  end;
Das war jetzt natürlich sehr verkürzt, aber ich hoffe, damit kann jemand was anfangen

Grüße
Christof
  Mit Zitat antworten Zitat