LabVIEWForum.de
Richtige Nutzung der Methode 'Ctrl Val.Set' - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Richtige Nutzung der Methode 'Ctrl Val.Set' (/Thread-Richtige-Nutzung-der-Methode-39-Ctrl-Val-Set-39)



Richtige Nutzung der Methode 'Ctrl Val.Set' - nurso - 15.12.2010 19:30

Hallo in die Runde und schönen guten Abend,

ich hab mich da grad in etwas hineingesteigert - nichts Kriegsentscheidendes, eher der eigene Ehrgeiz - was ich nicht ganz auflösen kann. Zugegeben, dieses Thema wurde bereits auch schon einige Male in abgewandter Form diskutiert, nur eine Lösung fällt mir unterm Strich nicht ein.

Motivation: Ursprünglich fehlte mir in LabVIEW ein Dialog/Hinweis ohne Schaltflächen. Gut, SubVI mit String-Eingabe, dynamischer Aufruf etc. pp.

Als Ergänzung dazu möchte ich das SubVI - nennen wir es Hinweis PopUp - dahingehend erweitern, dass es zusätzlich zum parallelen Prozess einen Status-Bar füllt. Das Element existiert unter Anzeige/Numeric. Und weiter, das Hinweis PopUp soll möglichst allgemein eingestzt werden können, sprich keine globalen Variablen enthalten und Hinweis-Text, Status/Fortschritt und Maximalwert des Prozess-Bars als Anschlüsse nach aussen gelegt.

Anbei nun EIN Aufruf des SubVI 'Hinweis PopUp'. Frage: Warum wird der Status-Bar nicht richtig aktualisiert?

[attachment=31269]

Das Satus-Bar Element im SubVI trägt den Namen 'Fortschritt'.
Der Status-Wert im Aufrufer (s. Abbildung) wird richtig aktualisiert.
FP.Öffnen in die While-Schleife hinein zu ziehen bringt keine Punkte.
FP.Aktualisieren o.ä. kann ich weder als Eigenschaft noch als Methode finden.
Denke aber am Letzteren muss es ja irgendwie liegen...

Danke für Eure Hinweise!

Gruss


Richtige Nutzung der Methode 'Ctrl Val.Set' - macmarvin - 15.12.2010 23:43

Glas1
- Die Methode liefert ein Fehler zurück, den du gerade nicht anzeigst
- Der Wert wird richtig geschrieben, aber die Anzeige aktualisiert nicht, da "Defer Panel Updates" des Panels auf True steht (eher unwahrscheinlich). "Defer Panel Updates" auf False setzen führt zum Redraw (afaik quasi ein forced redraw).


Richtige Nutzung der Methode 'Ctrl Val.Set' - nurso - 16.12.2010 08:29

Hallo MacMarvin,

die Zauberkugel hat gesprochen, aber die Realität schlägt zurück Box

Der 'Einfache Fehlerhändler' gab und gibt leider keinen Fehler, daher ist mir hier auch der berühmte Rote Faden abgerissen.

Auch die ausführliche Hilfe äussert keinerlei Bedenken beim Anwenden der Methode 'Ctrl Val.Set'.

Initiiere ich eine allg Methode 'AppPalettenPaletten aktualisieren' (einziger sinnvoller Treffer bei der Suche nach 'Frontpanel aktualisieren'Wink und verbinde den Knoten mit der Referenz meines 'Hinweis PopUp' SubVIs nörgelt meine Anwendung rum: Versuch eine ungültige Methode auszuführen.

Was tun?
Die Eigenschaft 'Defer Panel Updates' kann ich nicht finden.
Würde hier aber sicher Sinn machen...

Danke und Gruss
Mail


Richtige Nutzung der Methode 'Ctrl Val.Set' - GerdW - 16.12.2010 09:03

Hallo nurso,

Paletten aktualisieren hat aber auch gar nichts mit einem Redraw des Frontpanels zu tun! Ja, das ist eine ungültige Methode...

DeferPanelUpdates ist eine Eigenschaft des Frontpanels und auch dort zu finden:
[attachment=31279]


Richtige Nutzung der Methode 'Ctrl Val.Set' - rasta - 16.12.2010 10:56

Vielleicht hilft das...Lv09_img2

Gruß
Ralf


Richtige Nutzung der Methode 'Ctrl Val.Set' - nurso - 17.12.2010 16:16

Hallo zusammen,

ich hab mir die Problematik noch einmal vorgenommen und fleissig eure Antworten studiert.

Es war NICHT

- DeferPanelUpdate
- Hinweis auf 2009 (s. meine Profileinstellungen links).

Trotzdem, Punkt für's LVF! Thanx


Anbei meine endgültige Lösung....

[attachment=31314]

Anstelle vom ElementenName 'Status' hatte ich ursprünglich ein Anschlussfeld angesprochen ('Fortschritt'Wink, dort wo ich jetzt mit 0 initialisiere. Auf diese Weise wurde der Wert nicht an den Status-Bar weitergegeben. Auch nicht, wenn ich 'FP.Öffnen' zusätzlich noch mit in die While-Schleife ziehe.

Jetzt habe ich es so gemacht, wie rasta es vorgeschlagen hatte. 'Ctrl Val.Set' -> ElementeName 'Status' = Status-Bar direkt adressieren. Voila!

Den Rest von rasta's Vorschlag verstehe ich zwar, nur finde ich in der G-Klasse kein Pendant zum meinem 'Slide'. Zur Erklärung: Ich habe für die Status-Bar Anzeige nicht wie rasta einen einfachen numerischen Schieberegler, sondern eine Messanzeige (horizontal) gewählt. Daher will er an dieser Stelle die strikte Klassenreferenz zum Schieberegler nicht.

[attachment=31315]

Aber kein Problem. Da ich mein Status-PopUp sowieso mit einer statischen Referenz aufrufe, kann ich gleich das SubVI in den Aufrufer werfen und den Maximalen Wertebereich als Eingang übergeben; in diesem Fall 'Prozess: Maximum' (Frame Count).

Anbei noch einmal meine ursprüngliche, fehlerhaft Lösung mit Dank an Gerd! Habe jetzt endlich kapiert, wie ich auf die zusätzlichen SubVI Element-Referenzen zugreifen kann bzw. muss.

[attachment=31316]


Euch ein schönes WE und nochmals vielen Dank.

- nurso -


Richtige Nutzung der Methode 'Ctrl Val.Set' - macmarvin - 17.12.2010 17:02

War dein Statusfenster VI eigentlich ursprünglich "reentrant" gesetzt?


Richtige Nutzung der Methode 'Ctrl Val.Set' - nurso - 17.12.2010 18:21

Nein. War es nicht.