(15.02.2011 12:35 )mikeee schrieb: - lock (man kann nur noch lesen, das ist aktiv, wenn der Test läuft, damit nichts mehr an den Einstellungen geändert werden kann.
Die Funktion heißt also LOCK. Hier wird intern ein Flag gesetzt, das "Daten schreiben" in der FGV unterbindet.
Zitat:- GetIfLocked (um damit die Subpanels greyouten)
Diese Funktion ist an sich überflüssig.
Trick: (D)Eine FGV hat neben dem Datenausgang einen Statusausgang. Will das TabSheet wissen, ob die Daten ausgegraut werden sollen, wird der Status abgefragt.
Je nach Lust und Aufwand geht auch folgendes:
Übergib der FGV pro Datencluster eine Referenz auf das entsprechende Anzeige/Eingabe-Element. Jetzt kann der LOCK/UNLOCK-Befehl die entsprechenden Elemente entsprechend manipulieren. Das SubVI, das im SubPanel ausgeführt wird, hat somit keinerlei Aufwand mit enable/disable.
Zitat:Wenn ich jetzt Daten vom File lese, muss ich das den SubPanels irgendwie mitteilen, damit diese ihre Controls updaten und nicht etwa wieder die alten Daten in die FVG schreiben. Soll ich da über eine Queue allen SubPanels eine Nachricht senden (Achtung Leute liest mal die Daten neu ein!)? Oder wie macht ihr das?
Per Referenz.
Beachte folgendes:
Das Programm wird ja stäter von einem Anwender benutzt. Der kann aber immer nur einen Reiter eines TabSheets sehen. Demzufolge auch immer nur ein SubPanel. Es liegt also nahe, dass auch nur ein einziges SubVI aktiv ist. Viele SubVIs in vielen SubPanel, die auf die FGV zugreifen wollen, gibt es also gar nicht. Demzufolge muss also niemandem mitgeteilt werden, dass jetzt Daten zu refreshen sind.
Bei mir geht das so:
Es gibt ein HauptVI, das das Registerkartenelement enthält - und auch nur dieses. Die einzelnen Reiter sind leer! Das einzige, was man sieht, sind die Schaltflächen der Reiter. Unterhalb des Registerkartenelements gibt es ein einziges SubPanel. Bei Klick auf einen Reiter wird das dem Reiter zugeordnete SubVI ausgeführt. Und das erste, was das SubVI macht, ist, das Anzeige/Eingabe-Element entsprechend dem LOCK-Status zu manipulieren. Da alle anderen SubVIs gar nicht laufen, gibt es auch keine Notwendigkeit deren Elemente zu manipulieren ...
Damit entfallen alle deine aufgezeigten Probleme.
Nachtrag:
Ich sag mal so: Ob ein "FGV" "einfaches SubVI" oder "MöchteGern-Klasse mit gekapselten Daten und Propertys" genannt wird, ist mir eigenlich egal. Wichtig sind die gekapselten Daten. Die Möglichkeit von Propertys ist ideal. Warum also nicht "MöchteGern-Klassen" verwenden?