LabVIEWForum.de - Property-Nodes von Bedienelementen in Sub-VI’s ändern

LabVIEWForum.de

Normale Version: Property-Nodes von Bedienelementen in Sub-VI’s ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

in meinem LV-Projekt habe ich jede Menge Bedien- und Anzeigeelemente (ca. 70). Dementsprechend groß ist auch das Programm (viele Sub-VI’s). Die Aktualisierung der Werte der Elemente erfolgt im Hauptprogramm.
Manchmal ist es erforderlich die Property-Nodes von Bedienelementen zu ändern. Hauptsächlich geht es dabei um die Eigenschaften „Deaktiviert“. Dies soll aber auch in Sub-VI’s geschehen. Wie geht man dabei am Besten vor?

Man könnte die Refnum des Elementes an das Sub-VI übergeben. Bei den vielen Elementen ist das nicht so die große Idee.

Man könnte die Refnum des Frontpanels an das Sub-VI übergeben. Damit hat man über die Eigenschaft „Bedienelemente[]“ Zugriff auf alle Elemente des Frontpanels und kann über den Namen des gewünschten Elements dessen Refnum bestimmen. Diese Methode ist sicherlich der Performance nicht zuträglich. Ein weiterer Nachteil ist, dass alle Elemente, welche auf Registerkarten platziert sind, nicht in der Liste „Bedienelemente[]“ enthalten sind.

Habt ihr dazu eine Idee?

Gruß
Funktionale Globale Variable ist IMO das Stichwort.
Ich hab mir diese Tage so etwas gebaut. Ich lese genau über die erwähnte Property Node alle FP Elemente (Label und Reference) ein und speichere sie in der funktionalen Globalen Variable. (ich lasse mir auf dem FP die Caption anzeigen und kann somit kurze und prägnante Variablen-Namen vergeben)

Jetzt kann ich mir darin Funktionen definieren (visible, hide, enable, disable etc pp) und über das FP-Label sie steuern....

Gruss,
Christian
' schrieb:Man könnte die Refnum des Frontpanels an das Sub-VI übergeben. Damit hat man über die Eigenschaft „Bedienelemente[]“ Zugriff auf alle Elemente des Frontpanels und kann über den Namen des gewünschten Elements dessen Refnum bestimmen. Diese Methode ist sicherlich der Performance nicht zuträglich. Ein weiterer Nachteil ist, dass alle Elemente, welche auf Registerkarten platziert sind, nicht in der Liste „Bedienelemente[]“ enthalten sind.
Da hast du Unrecht. Die ganzen Referenzen sind bloss kaskadiert. Soll heißen: Du hast erst die Referenz auf ein TabControl, von dort kommst du per PropertyNode an das Referenz-Array der Seiten des TabControl, dann IndexArray und dann kommst du per PropertyNode an die alle Bedienelemente einer Seite des TabControls.

[attachment=12190]

Ähnlich sieht es für Cluster, per SplitterBar kreierter Seiten eines FP usw. aus.

MfG, Jens
<!--quoteo(post=49663:date=23.04.2008 , 15:29:07:name=<<oenk>>)--><div class='quotetop'>ZITAT(<<oenk>> @ 23.04.2008 , 15:29:07) [url=index.php?act=findpost&pid=49663][/url]</div><div class='quotemain'><!--quotec-->Funktionale Globale Variable ist IMO das Stichwort.
Ich hab mir diese Tage so etwas gebaut. Ich lese genau über die erwähnte Property Node alle FP Elemente (Label und Reference) ein und speichere sie in der funktionalen Globalen Variable. (ich lasse mir auf dem FP die Caption anzeigen und kann somit kurze und prägnante Variablen-Namen vergeben)

Jetzt kann ich mir darin Funktionen definieren (visible, hide, enable, disable etc pp) und über das FP-Label sie steuern....

Gruss,
Christian[/quote]

Hallo Christian!

Kannst Du Dein Vi mal posten?

Gruß,
Ronin
' schrieb:Hallo Christian!

Kannst Du Dein Vi mal posten?

Gruß,
Ronin


ich glaube nicht...da wird mein Chef was dagegen haben....
es ist aber recht einfach nachzubauen! Ich hab dir hier den ein oder anderen screenshot wie ich es gemacht habe....

Lese FP elemente ein: read_FP-Ref.png
füge Ref und Label in funktionale Globale Variable: add_cDes-Ref.png
beliebige Funktion (bsp: hide): hide_FP-Element

viele Gruesse
Christian
Hi Leute,

Besten Dank für Eure Antworten.

@Christian
Funktionale Globale Variable ist ein gutes Stichwort. Diese Technik kannte ich bis jetzt noch nicht.
Werde es gleich mal ausprobieren. Wäre es aber in Deinem Beispiel nicht besser, statt eine 2D-Arrays
2 gleichgroße 1D-Arrays zu verwenden? Da könnte man die For-Schleifen in add_cDes-Ref.png weglassen.

Gruß Micha
<!--quoteo(post=49726:date=24.04.2008 , 10:03:03:name=<<oenk>>)--><div class='quotetop'>ZITAT(<<oenk>> @ 24.04.2008 , 10:03:03) [url=index.php?act=findpost&pid=49726][/url]</div><div class='quotemain'><!--quotec-->ich glaube nicht...da wird mein Chef was dagegen haben....
es ist aber recht einfach nachzubauen! Ich hab dir hier den ein oder anderen screenshot wie ich es gemacht habe....

Lese FP elemente ein: read_FP-Ref.png
füge Ref und Label in funktionale Globale Variable: add_cDes-Ref.png
beliebige Funktion (bsp: hide): hide_FP-Element

viele Gruesse
Christian[/quote]
Hallo Christian!

Das war der Einstieg, der mir gefehlt hat!
Danke Dir!

Gruß,
Ronin
' schrieb:@Christian
... nicht besser, statt eine 2D-Arrays
2 gleichgroße 1D-Arrays zu verwenden?....Gruß Micha

Hi Micha

das ist kein 2D array sondern ein 1D-Array of Cluster [cDescription, refReference].
Die for-Schleife mache ich, um die Daten aus dem Cluster zu extrahieren...
Du hast recht, ich könnte das aber auch in 2 1D-Arrays machen, dann sind die Daten aber nicht automatisch gekoppelt und man muss aufpassen, dass die Indizes in beiden Arrays immer gleich sind.....
Es gibt sicher eine elegantere Lösung als das so zu machen...
Da das Array aber nicht wirklich gross wird sehe ich keine Probleme das so zu lösen...

Wenn jemand einen besseren und genauso sicheren Weg weiss -> immer her damit

Gruss,
Christian
Referenz-URLs