Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
mal wieder ein Frage von mir. Ich möchte nämlich mehrere Bedienelemente ausgrauen/deaktivieren, und das tue ich an unterschiedlichen Stellen meines Programms (das als Zustandsautomat realisiert ist). Nun suche ich eine Möglichkeit, das ganze eleganter zu machen als an jeder Stelle die Eigenschaften der einzelnen Elemente zu verändern. Ich habe schon überlegt, ein SubVI dafür zu erstellen, aber dem müsste ich ja die Referenzen über alle Elemente geben, die ich ausgrauen möchte - auch nicht so toll. Gibt es vielleicht eine andere Möglichkeit?
Ich hab schon überlegt, parallel zum Hauptprogramm eine While-Schleife mit einer Ereignisstruktur laufen zu lassen, die dann auf ein von mir geworfenes Ereignis reagiert (sich also quasi wie ein SubVI aufrufen lässt, aber im Hauptprogramm liegt). Kann man denn überhaupt ein Ereignis werfen?
eine Anregung, um mehrere Controls gleichzeitig auszugrauen ist vielleicht die, ein durchsichtiges und inaktives PictureControl über die auszugrauenden Elemente zu legen und dann sichtbar / unsichtbar zu setzen. Ansonsten wirst du um die Referenzen der Ctrls nicht umhinkommen. Die könntest du dir aber als Array ausgeben lassen und dann namentlich filtern, um die gewünschten Controls auf ihren Status zu setzen.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Ausgrauen ohne SubVi/Redundanz
Gruß Markus
(15.08.2013 11:41 )daxel schrieb: Kann man denn überhaupt ein Ereignis werfen?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
"Events werfen" meint wohl den Einsatz der Property "Wert (Sgl)" ("Value, signalling") - oder die Nutzung von User-definierten Events...
Was ist so schlimm daran, die Referenzen der betreffenden Controls zu sammeln? Entweder "per Hand" durch Erzeugen der Referenzen per Rechtsklick oder durch Filtern der Liste aller Controls! Dein angesprochenes subVI bekommt dann als Eingang das Array mit den Referenzen und ein Enum für die "Deaktiviert"-Property (neben den üblichen ErrorIn/Out...)
Genau so war das gemeint, Gerd - da hab ich mich wahrscheinlich schlecht ausgedrückt, ich wusste nur nicht wie ich das sonst nennen sollte - ich hab mich etwas davon "inspirieren" lassen, dass man in anderen Sprachen Fehler werfen kann (throw new Error()), tut mir Leid .
Okay, dann werde ich die Referenzen in einem Array sammeln und ans SubVI übergeben, obwohl sich der Ansatz mit dem PictureControl auch gut anhört..
Auf jeden Fall dankeschön
15.08.2013, 12:46 (Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2013 12:52 von Lucki.)
Man kann die Elemente, die gleichzeitig ausgegraut werden solle, auch zu einem Cluster zusammenfassen und dann den ganzen Cluster ausgrauen. Damit sich die FP-Optik nicht ändert, kann man den Clusterrahmen tranparent machen. Man kann auch transparente Cluster übereinanderlegen. Wenn man beispielsweise 4 im Quadrat angeordnete Elemente hat, dann können durchaus die Element links oben und rechts unten zu Cluster 1 und die anderen beiden zu Cluster 2 gehören. Will damit sagen, dass durch die Clusterbildung die Gestaltungsfreiheit auf dem FP nicht eingeschränkt wird. Funktioniert allerdings nicht wenn alles Bedienelemente sind, da dann von den beiden transparenten Untergründen einer oben liegt und die Bedienung des anderen Clusters verhindert.
Eine der besten Methoden ist immer noch die Verwendung der Registerkarte. Die kann man so designen, dass man ihr nicht mehr ansieht dass es eine ist. Die nicht zu benutztende Elemente verschwinden dann natürlich ganz, aber dadurch kommt mehr Übersicht in das FP und man hat mehr Platz.
Im Endeffekt benutze ich jetzt eine Mischung der Vorschläge: Ganz unten habe ich eine Registerkarte mit den Bedienelementen, die zu einer bestimmten Zeit angezeigt werden sollen; es gibt aber auch Bedienelemente, die ausgegraut werden.
Falls es noch jemanden interessiert/jemand auch danach sucht, hier mein SubVI zum ausgrauen. Als Eingänge einfach ein Array mit Referenzen und eine Konstante mit dem entsprechenden Wert anschließen.
(15.08.2013 12:46 )Lucki schrieb: Eine der besten Methoden ist immer noch die Verwendung der Registerkarte. ... Die nicht zu benutztende Elemente verschwinden dann natürlich ganz, ...
Das muss ja noch nichtmal so sein. Man kann ja auch einzelne Seiten der Registerkarte ausgrauen, wodurch dann auch alle enthaltenen Controls ausgegraut wären, allerdings auch alle Graphiken - eben alles darauf.