Cluster Scripting Methode "Set Cluster Order" funktioniert (bei mir) nicht
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!
Cluster Scripting Methode "Set Cluster Order" funktioniert (bei mir) nicht
Hallo Leute,
ich habe ein kleines Problem, nämlich das ich ums Verrecken die Methode "Set Cluster Order" nicht zum laufen bekomme.
Ich hole mir mit dem Property "Controls[]" die Elemente aus dem Cluster, sortiere die um, schiebe sie bei "Element Refs" rein. Keine Fehler, aber am Ende, wenn ich Controls[] wieder abfrage ist alles beim Alten.
Über Probes habe ich sichergestellt, dass das Array von Referenzen auch wirklich umsortiert ist, wenn ich es in "Element Refs" schiebe, also das ist nicht das Problem.
Welche Fehlerquellen seht ihr denn noch so?
Vom Vorgehen habe ich mich hier inspirieren lassen.
Wenn ich das Problem nicht ausreichend beschrieben habe, bitte beschweren!
Vielen Dank schon mal!
Ciao!
Anzeige
18.02.2013, 00:18 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2013 00:23 von Trinitatis.)
du startest das VI, dessen Clusterinhalte du neu sortieren willst. So wie du zur Laufzeit eines VIs nicht die Namen von Controls ändern kannst, geht auch das nicht.
Du müsstest das VI starten, die Clusterreferenzen auslesen und nach dem Stoppen des VIs die Referenzen in einem anderen VI verwenden, um die Elemente umzusortieren. Dieser Umweg ist natürlich nur zu gebrauchen, wenn du diese Umsortierung nur einmal bzw. selten machst.
Gruß, Marko
Edit:
Sorry, vergiss die Antwort, hab gerade gesehen, dass du das VI nur in den Speicher lädst und nicht startest.
Also bei mir hats funktioniert
Hab die Kontrolle aber nicht programmatisch (Controls[]) ausgeführt, sondern direkt im VI, bzw. Cluster überprüft.
Gruss
Chris
Hallo!
Bei mir zwar nicht, aber du hast mich zumindest in die Richtung gestoßen, wo der Hund begraben scheint:
An sich geht das Umsortieren, wenn ich z.B. Elementare Datentypen wie String, Boolean oder Numerics nehme (in meinem Beispiel "drei" mit "vier" tauschen).
Auch wenn ich in meinem Cluster ein anderes kleines Untercluster (in meinem Beispiel "eins" oder "zwei") habe und es gegen einen elementaren Datentyp tausche geht es noch.
Wenn ich aber zwei Cluster gegeneinander tauschen will, dann tut sich nichts (weder bei Controls[] noch in der visuellen Darstellung im Typedef-Fenster mit "Reorder Controls in Cluster").
Kann mir jemand eine Erklärung liefern, warum das so ist. Und was man dagegen machen kann?
Ich habe mal kleines Beispiel mit dem angepassten VI angehängt (als 2011er).
Untercluster, die mit einer (der gleichen) Typedef verbunden sind, kann ich NICHT tauschen. Wenn ich die Verbindung zur Typedef bei Beiden löse, aber sonst nichts ändere kann ich sie tauschen.
Hast Du schon mal versucht den Typdef programatisch (nur temporär) zu ändern (Typdef zu Control) und nach dem Tauschen wieder auf Typdef zu setzen?
Muss allerdings zugestehen, dass ich dies selber nie ausprobiert habe
Gruss
Chris
18.02.2013, 16:08 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2013 16:11 von triumvirn.)
Es muss irgendeine System-interne Unverträglichkeit/Einschränkung geben.
Ich habe folgendes versucht: Statt Typedef-Cluster zu vertauschen habe ich ein Numeric erstellt, das sich (wie in den Vorpost beschrieben) mit jeweils einem Typedef-Cluster problemlos tauschen lässt.
Wenn ich jetzt ein Typedef-Cluster mit einem anderem Typedef-Cluster tauschen möchte, tausche ich solange nach einem einfachen Algorithmus das Numeric mit anderen Typedef-Cluster, sodass am Ende die Reihenfolge der Typedef-Cluster richtig ist/wäre und das erstellte Numeric gelöscht werden kann.
Das klappt auch wunderbar bis zum LETZTEN Schritt, dann leite ich die letzte Tauschaktion ein, wo ich eigentlich danach nur noch den Numeric löschen müsste und dann springt auf mirakulöser Weise die gesamte Reihenfolge wieder auf den Ausgangszustand zurück, als ich das Numeric hinzugefügt habe.
Also macht LV aus irgendeinem Grund 5,10 oder 20 Aktionen auf einen Schlag rückgängig!
Nachdem das kein Zufall sein kann, gehe ich davon aus, dass LV die ganzen Wechsel mitprotokolliert und bei der letzten Aktion (bei der ich am Ziel wäre) alles wieder auf Anfang setzt, da ihm das Tauschen von (gleichen?) Typedef-Cluster aus irgendeinem Grund nicht passt.
Da hätte man in der Dokumentation der Funktion wirklich schreiben können dass das nicht geht! Hätte mir viel Zeit erspart.
18.02.2013, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2013 16:54 von triumvirn.)
Hast Du schon mal versucht den Typdef programatisch (nur temporär) zu ändern (Typdef zu Control) und nach dem Tauschen wieder auf Typdef zu setzen?
Muss allerdings zugestehen, dass ich dies selber nie ausprobiert habe
Gruss
Chris
Hallo!
Danke.
Ich habe es mal ausprobiert und es "klappt" schon, bloß sind danach im großen Cluster alle Untercluster nicht mehr mit der Typedef verbunden.
Oder kann man per Script ein Cluster mit seiner Typedef verbinden. Ich kann das sonst nur per Hand über "Select Control..."?!
Ich kann mir auch gar nicht vorstellen, was es für LV für einen Unterschied machen soll, ob ich Typedef-Cluster umsortiere oder normale Cluster umsortiere. Per Hand geht ja auch beides.