AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AW: Komponenten Editor, (Teil 2)

Ein Thema von Mavarik · begonnen am 24. Okt 2012 · letzter Beitrag vom 25. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Komponenten Editor, (Teil 2)

  Alt 24. Okt 2012, 14:37
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
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponenten Editor, (Teil 2)

  Alt 24. Okt 2012, 14:48
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...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Komponenten Editor, (Teil 2)

  Alt 24. Okt 2012, 14:55
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponenten Editor, (Teil 2)

  Alt 24. Okt 2012, 21:51
Zitat von Mavarik:
Hi Frank

Und haste ne Idee? Wie erzeuge ne Komponente "für" den Objectinspector?

Grüsse
Wie gesagt, es kommt ja erstmal drauf an, was gemacht werden soll.

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:
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;
(Component ist ein HintManager, welcher auf der Form liegt, also Component.Owner ist erstmal nur die Form selber)



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
Miniaturansicht angehängter Grafiken
unbenannt.png  
$2B or not $2B

Geändert von himitsu (24. Okt 2012 um 22:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 11:00
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 .
Danke (Falscher Thread) aber trotzdem Danke... Diesen schritt habe ich ja bereits mit Designer.Createcomponent gelößt.

Jetzt geht es um die Frage wie Iteriere ich durch das Formular um in meinen Editor auf alle Komponenten zugreifen zu können.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 11:09
Kommst du über den Designer an die TForm/TCustomForm-Instanz der Form ran?
Dann könntest du .Components, bzw. .Controls nutzen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 11:16
Kommst du über den Designer an die TForm/TCustomForm-Instanz der Form ran?
Dann könntest du .Components, bzw. .Controls nutzen.
So nach dem Motto

Delphi-Quellcode:
Test := TMyPanel(GetOrdValue).Parent;
while not(Test is TForm) and (Test <> NIL) do
  Test := Test.Parent;
Muss ich testen
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 11:56
OK Das geht...

Nicht schön, aber es funktioniert...

Danke
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 12:13
Mal interessehalber: Ist Owner Deines Panels der Designer statt des Formulars?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Komponenten Editor, (Teil 2)

  Alt 25. Okt 2012, 12:15
Mal interessehalber: Ist Owner Deines Panels der Designer statt des Formulars?
Nein... Wieso?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz