![]() |
AW: Komponenten Editor, (Teil 2)
Hallo Zusammen!
Ich habe jetzt erfolgreich mit meinem Komponenten Editor neue Komponenten erzeugt... Designer.CreateComponent Prima! Aber wie kann ich durch die neu erzeugen Komponenten beim nächsten Aufruf Iterieren? Ein Designer.Components[i] oder Designer.CoumponentCount gibt es nicht... Grüsse Mavarik |
AW: Komponenten Editor, (Teil 2)
Zeig doch mal ein paar Screenshots, damit man besser nachvollziehen kann, was Du machst...
Wenn man z.B. aus einem DataSet im Designer Items in das Forular zieht, werden ja LabeledEdits im Formular erzeugt und mit den Datenbankfeldern verknüft. So etwas ähnliches willst Du machen - oder? Und dann willst Du in deinem Komponentenditor das nächste mal noch die Controls finden, die erzeugt wurden - oder? Das sind ja aber inzwischen ganz normal Formularcontrols geworden. Evtl. könntest Du Dein MyPanel untersuchen, welche Controls darauf plaziert sind. Oder Du suchst alle Formular-Componenten und prüfst, ob die vom Namen her zu Deinem MyPanel passen. Evtl. könntest Du in Deinem MyPanel auch eine ReadOnly-StringList verwalten und dort die erzeugten Komponentennamen verwalten. Wäre wohl mal interessant, wenn Du bissl was zeigen würdest... |
AW: Komponenten Editor, (Teil 2)
Etwas zeigen ist ein bischen schwierig... Was den... Da gibt es ja nix zu sehen
Meine Panel hat einen Editor dieser wird aufgerufen. Aber mein Panel hat keine unterelement... Die kennt nur der ObjektInspector Beispiel: Poste im Propertyeditor alle Komponenten des Forms... Wie geht das, denn: es Gibt keine Komponents array Mavarik |
AW: Komponenten Editor, (Teil 2)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Wenn dein Panel wie ein "normales" Panel sein soll, also alle erzeugten Komponenten auch normal behandelt werden sollen, dann hat es bei mir immer gereicht, wenn ich die Komponenten einfach ganz normal erzeugt hatte. Also Owner = Panel.Owner (die Form) und Parent = dein Panel . z.B. folgender Code erstellt jetzt einfach mal testweise ein Panel und darin ein paar Buttons. Das ist jetzt zwar nur schnell mal in den Code meines HintManagers gehackt, weil der halt verfügbar war und es ist FMX und nicht VCL, aber dieses Verhalten ist überall gleich.
Delphi-Quellcode:
(Component ist ein HintManager, welcher auf der Form liegt, also Component.Owner ist erstmal nur die Form selber)
procedure THintManagerLink.ExecuteVerb(Index: Integer);
var X: TPanel; begin case Index of 0: ...; 1: //raise EProgrammerNotFound.Create('Nicht implementiert.'); begin X := TPanel.Create(Component.Owner); with X do begin Name := 'Panel12346'; Parent := Component.Owner as TFmxObject; end; with TButton.Create(Component.Owner) do begin Position.X := Position.X + 20; Position.Y := Position.Y + 20; Name := 'dsadsa'; Parent := X; end; with TButton.Create(Component.Owner) do begin Position.X := Position.X + 40; Position.Y := Position.Y + 40; Name := 'gfdsgfd'; Parent := X; end; with TButton.Create(Component.Owner) do begin Position.X := Position.X + 60; Position.Y := Position.Y + 60; Name := 'efklj'; Parent := X; end; end; end; end; Wird die Kompoente nur in deinem Panel "manuel" erstellt und jeweils im Constructor beim Laden wieder selbst erstellt/geladen und ist sie nur über ein Published-Property sichtbar, dann kann man über SetSubComponent dafür sorgen, daß Delphi die Eigenschaften dieser Komponente läd/speichert. siehe z.B. die ColorMap der TActionMainMenuBar |
AW: Komponenten Editor, (Teil 2)
Zitat:
Jetzt geht es um die Frage wie Iteriere ich durch das Formular um in meinen Editor auf alle Komponenten zugreifen zu können. Mavarik |
AW: Komponenten Editor, (Teil 2)
Kommst du über den Designer an die TForm/TCustomForm-Instanz der Form ran?
Dann könntest du .Components, bzw. .Controls nutzen. |
AW: Komponenten Editor, (Teil 2)
Zitat:
Delphi-Quellcode:
Muss ich testen
Test := TMyPanel(GetOrdValue).Parent;
while not(Test is TForm) and (Test <> NIL) do Test := Test.Parent; |
AW: Komponenten Editor, (Teil 2)
OK Das geht...
Nicht schön, aber es funktioniert... Danke |
AW: Komponenten Editor, (Teil 2)
Mal interessehalber: Ist Owner Deines Panels der Designer statt des Formulars?
|
AW: Komponenten Editor, (Teil 2)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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-2025 by Thomas Breitkreuz