![]() |
Namensgenerierung von Subkomponenten
Hi,
Ein etwas komischer Titel :mrgreen: Ich baue gerade an einer Art PageControl für Arme. Bin allerdings kein besonders erfahrener Komponentenentwickler... Habs aber geschafft dass meine Pages jetzt erstellt werden. Allerdings ohne Name (zur Designtime etwas nervig). Ich hätte halt auch dass diese Namen automatisch generiert werden. So wie "Tabsheet1", "Tabsheet2" etc. Kriege es aber nicht hin. Bzw. ich könnte selbst mitzählen, aber ich habe im Hinterkopf, dass es irgendwie automatisch geht. Weiß allerdings nicht (mehr) wie.. :gruebel: Gruß Neutral General |
Re: Namensgenerierung von Subkomponenten
Liste der Anhänge anzeigen (Anzahl: 1)
Tut mir Leid dass ich jetzt schon pushe, aber wenn ichs heute Abend um halb 10 mache, dann ist wieder keiner online :stupid:
Hab mal ein Bild angehangen was mein Problem "in Aktion" zeigt. Die "Pages" meines "TPanelControl"s bekommen halt keinen Namen zugewiesen wenn ich sie zur Designtime hinzufüge... Ich will prinzipiell ja sowas ähnliches wie ein PageControl bauen. Die Tabsheets sind in der Liste aber auch irgendwie so halb transparent dargestellt... Meine Pages nicht. Weiß nicht in wie weit das jetzt mit meinem Problem zusammen hängt. Ich hab mir schon den Code vom PageControl und vom Tabsheet angeguckt, aber konnte da keine nützlichen Infos rausziehen :( Hier auch ein bisschen Code von mir, der evtl relevant sein könnte:
Delphi-Quellcode:
Und dann ein KomponentenEditor für TPanelControl:
// Im Moment noch etwas chaotisch aufgrund von "Ausprobierphase"
constructor TPanelControl.Create(AOwner: TComponent); begin inherited Create(AOwner); FIndex := -1; FPanels := TPanelSheetList.Create(false); end; procedure TPanelControl.AddPage; var tmp: TPanelSheet; f: TCustomForm; begin f := Owner as TCustomForm; if csDesigning in ComponentState then tmp := TPanelSheet.Create(f) else tmp := TPanelSheet.Create(Self); tmp.Parent := Self; if f.Designer <> nil then f.Designer.Modified; FPanels.Add(tmp); FIndex := FPanels.Count-1; end; { TPanelSheet } constructor TPanelSheet.Create(AOwner: TComponent); begin inherited Create(AOwner); Align := alClient; end;
Delphi-Quellcode:
Sowohl TPanelControl als auch TPanelSheet sind von TCustomPanel abgeleitet.
unit ComponentEditors;
interface uses DesignIntf, DesignEditors, PanelControl; type TPanelControlEditorPopup = class(TComponentEditor) public function GetVerbCount: Integer; override; function GetVerb(Index: Integer): string; override; procedure ExecuteVerb(Index: Integer); override; end; procedure Register; implementation procedure Register; begin RegisterComponentEditor(TPanelControl, TPanelControlEditorPopup); end; { TPanelControlEditorPopup } procedure TPanelControlEditorPopup.ExecuteVerb(Index: Integer); begin TPanelControl(Component).AddPage; end; function TPanelControlEditorPopup.GetVerb(Index: Integer): string; begin Result := '&Add Page'; end; function TPanelControlEditorPopup.GetVerbCount: Integer; begin Result := 1; end; end. Wäre echt froh, wenn mir jemand helfen könnte :? Gruß Neutral General |
Re: Namensgenerierung von Subkomponenten
Zitat:
|
Re: Namensgenerierung von Subkomponenten
Zitat:
|
Re: Namensgenerierung von Subkomponenten
Wenn du im DesignEditor irgendwie an die erzeugte Page herankommst (z.B. indem AddPage die erzeugte Page zurückgibt), kannst du ihm auch einen Namen geben:
Delphi-Quellcode:
procedure TPanelControlEditorPopup.ExecuteVerb(Index: Integer);
var newPage: TPanelSheet; begin newPage := TPanelControl(Component).AddPage; newPage.Name := Designer.UniqueName('PanelSheet'); end; |
Re: Namensgenerierung von Subkomponenten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz