Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Ist meine Komponente im Designer selektiert? (https://www.delphipraxis.net/195993-ist-meine-komponente-im-designer-selektiert.html)

Medium 12. Apr 2018 20:34

Ist meine Komponente im Designer selektiert?
 
Aloah.

Ich schreibe noch immer unsere Komponentensammlung auf FMX um. Bei einer würde ich ganz gerne ein paar zusätzliche Dinge zur Designtime einblenden, aber NUR wenn die Komponente gerade im Designer selektiert ist. Ansonsten würde das ein völliges Durcheinander auf dem Formular.
In der Property "ComponentState" wurde ich leider nicht fündig, und auch im Netz hat die Suche nichts brauchbares geliefert. (Vor allem weil die Suchbegriffe recht weit gefasste Ergebniskategorien hervorbringen.)

Kann ich in meiner Komponente irgend wie erkennen, ob sie im Designer angewählt ist?

himitsu 12. Apr 2018 21:47

AW: Ist meine Komponente im Designer selektiert?
 
Nein, nicht in der Komponente.

Das Einzige, was die Komponente weiß ist ComponentState csDesigning (aber nicht innerhalb des Contructors ... dortt muß man Owner.ComponentState nutzen)
Und dann noch csLoading usw. aber das kommt immer beim Laden der DFM, egal ob in IDE oder im laufenden Programm.


Über die OpenToolsAPI kommst du an den Object Inspector, bzw. Form Designer, und den kannst du dann fragen welche Komponente(n) aktuell selektiert sind.

Medium 13. Apr 2018 07:28

AW: Ist meine Komponente im Designer selektiert?
 
Zitat:

Zitat von himitsu (Beitrag 1399023)
Über die OpenToolsAPI kommst du an den Object Inspector, bzw. Form Designer, und den kannst du dann fragen welche Komponente(n) aktuell selektiert sind.

Das ist doch schon mal ein Stichwort zum weiter suchen. Danke!

Medium 13. Apr 2018 11:50

AW: Ist meine Komponente im Designer selektiert?
 
Hmm. Da steht, mann muss die VCL als Dependency in seinem Package mit hinzufügen um die OpenToolsAPI zu nutzen. Mache ich mir damit dann nicht die Plattformunabhängigkeit meiner Komponenten zunichte? Weil zur Runtime brauche ich das ganze ja nicht - da kann das alles weg bleiben.
Und ich finde in der Online-Hilfe partout nicht das entsprechende Interface, das mir Zugriff auf den Designer gäbe. Gibt's da irgendwo noch eine gesonderte, komplette Doku?

Neutral General 13. Apr 2018 12:33

AW: Ist meine Komponente im Designer selektiert?
 
Was hast du denn vor?
Es kommt mir komisch vor, dass deine Komponente so stark auf die Designtime fokusiert ist.

mkinzler 13. Apr 2018 12:48

AW: Ist meine Komponente im Designer selektiert?
 
Zitat:

Hmm. Da steht, mann muss die VCL als Dependency in seinem Package mit hinzufügen um die OpenToolsAPI zu nutzen. Mache ich mir damit dann nicht die Plattformunabhängigkeit meiner Komponenten zunichte?
Solange die IDE nur für Windows angeboten wird, nicht.

Uwe Raabe 13. Apr 2018 12:53

AW: Ist meine Komponente im Designer selektiert?
 
Zitat:

Zitat von Medium (Beitrag 1399100)
Hmm. Da steht, mann muss die VCL als Dependency in seinem Package mit hinzufügen um die OpenToolsAPI zu nutzen. Mache ich mir damit dann nicht die Plattformunabhängigkeit meiner Komponenten zunichte? Weil zur Runtime brauche ich das ganze ja nicht - da kann das alles weg bleiben.

Solche Dinge gehören dann auch in ein Design-Package und haben in den Sourcen der Komponente nichts verloren. Würdest du die OTA innerhalb der Komponente nutzen, kann diese auch nur innerhalb der IDE genutzt werden, weil damit eine Anhängigkeit zum IDE-Designer hergestellt wird - das will ja keiner. Also musst du dazu erst den gesamten Design-Kram auslagern. Wie das jetzt genau gehen kann, ist aber erheblich von der konkreten Aufgabenstellung abhängig. Spätestens hier wird jede Empfehlung zur Spekulation.

Medium 13. Apr 2018 13:20

AW: Ist meine Komponente im Designer selektiert?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich glaube dann mache ich es mir doch lieber einfach, und führe eine Property ein die bei Bedarf die zusätzlichen Dinge im Designer malt.

Hintergrund ist eine Komponente um Leitungszüge malen zu können. Dafür habe ich eine "Mutter-Komponente" die den Startpunkt definiert, und Kind-Komponenten die als Children untergeordnet die weiteren Stützpunkte bilden. Jede der Komponenten ist auf eine Größe von 16x16 Pixeln begrenz, und kann quasi als Anfasser benutzt werden. Dies mache ich so, damit z.B. eine Leitung die durch ihren Verlauf fast das ganze Formular abdeckt (also die Bounding-Box), aber nur ein paar dünne Linien zeichnet, mir die weitere Bearbeitung nicht unnötig erschwert.
Die Anfasser wollte ich halt ganz gerne nur sichtbar machen, wenn ein Knoten aus dem Leitungszug selektiert ist, da diese mir sonst bei komplexeren Anlagenbildern einen Haufen Unübersichtlichkeit bescheren werden. Gerade die Anfasser für die Kurven-Tangenten, die ja schon mal querfeldein liegen können.

Im Anhang ein Beispiel vom aktuellen Zustand. Die Farbigen Kreise und schwarzen Linien sind zur Runtime nicht sichtbar, und diese wollte ich zur Designtime eben auch verstecken, wenn kein Segment der Leitung selektiert ist. Aber mit einer Property geht's auch. Weniger schön, aber erheblich weniger Klimmzüge. Danke euch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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