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