Zitat von
xZise:
Wenn ich nun der Tabliste ein Tab hinzufüge mit folgender Funktion:
Delphi-Quellcode:
procedure TTabs.Add(const ATab: TTab);
begin
FTabs.Add(ATab);
ATab.FTabs := self;
end;
Dann gibt es dort einen Abstrakten Fehler.
Nur, wenn du eine TTab Instanz übergibst anstatt z.B. einer TExplorerTab Instanz.
Zitat von
xZise:
Wenn ich nun die nicht als abstrakt bezeichne und "Quasileerfunktionen" einsetze, dann habe ich das Problem in der Add-Funktion, ATab nicht mehr "aktuell" ist.
Folgender Aufruf (Tabs : TTabs):
Tabs.Add(TExplorerTab.Create(pcTabs, CreatePath(Node)));
Alles wunderbar... Jedenfalls scheint es so.
Wenn ich jetzt in der Add-Methode die Caption des TabSheets ändere, dann hat es keine Auswirkungen:
Delphi-Quellcode:
procedure TTabs.Add(const ATab: TTab);
begin
FTabs.Add(ATab);
ATab.FSheet.Caption := 'BOM!';
// Oder auch so (Die Add-Methode darüber wird entfernt):
(FTabs.Items[FTabs.Add(ATab)] as TTab).FSheet.Caption := 'BOM!';
ATab.FTabs := self;
end;
Wird denn im Constructor von TTab auch ordentlich FSheet entsprechend belegt mit auch der Instanz wo du die Caption Änderung erwartest?
Das vergessene Override beim Destruktor hast du ja nun schon ergänzt...