Hallo Zusammen,
ich frage mich, wie sich die Information (Array indices) über ein ausgewähltes Element eines angezeigten Arrays auslesen lässt. Das angehangen kleine Programm erstellt zeilenweise
ein Array. Ich würde es nun gerne erweitern und eine EDIT Funktion einfügen. Der User soll eine Zeile (bzw. ein Element einer Zeile) anklicken können, welche dann Unten erscheint und
editierbar ist. Ich wollte es über den PropertyNode SelectionStart der Anzeige erreichen, der gibt mit aber immer nur die gleichen Werte an (Null / Null). Wie lässt sich das Problem lösen?
Anmerkung:
Ich habe bewusst kein "Table-Element" oder Direkteingabe des obigen Array verwendet, da ich die Eingabe des Users, in Abhängigkeit von verschiedenen Schaltern modifiziere (hier nicht gezeigt) bevor Werte im angezeigten Array gespeichert werden.
LabVIEW 2009
[
attachment=26453]
[
attachment=26452]
Hallo BrainDrain,
ähnliches wurde hier vor kurzem schon mal diskutiert...
Erstmal:
Warum verwendest du die ganzen locals, wenn die Terminals unbenutzt rumliegen?
Warum verwendest du ein MouseDown-Event, wenn du einen ValueChange abfragen willst? (Add-Control)
Änderungen siehe Attachment.
Jetzt zu deiner Frage:
Um in einem Array die Klick-Positionen herauszubekommen, musst du die Mauskoordinaten (siehe Anhang) selbst umrechnen (Mausposition - Arrayposition, das ganze dann noch teilen durch die Größe der Arrayelemente...). Würdest du eine Tabelle verwenden, würde dir LabVIEW eine passende Methode per InvokeNode ("Point to Row Column") anbieten, um die Mausposition in Tabellenindex umzurechnen. Aber du willst ja partout ein Array verwenden...
Also: Warum ein Array? Der Benutzer bekommt von dir einen Indicator angeboten, in dem er per Definition nicht direkt editieren kann - ist ja auch nur ein Indicator und kein Control. Da ist es doch dem Benutzer egal, was für ein Anzeigeelement er bekommt... (Außerdem sehen Tabellen hübscher aus...)
@BrainDrain: Bitte das nächste Mal einen Screenshot in einem üblichen Internet-Bild-Format hochladen (also JPEG oder nach besser PNG, das sollte auch mit einem MAC möglich sein). JPGs und PNGs werden in jedem (zumindest) mir bekannten Browser inline angezeigt, Tiffs nicht. Außerdem schau dir den Dateigrößenunterschied an, Tiff war bei 700 kB, als PNG nur noch 90 kB. Danke.
Gruß, Jens
Hallo Jens,
gelobe für die Zukunft Besserung.
Danke für die schnelle Antwort Gerd.
zu !. Warum verwendest du die ganzen locals, wenn die Terminals unbenutzt rumliegen?
Lag daran, dass ich den Teil aus der ursprünglichen Anwendung schnell kopiert hatte. Die initiale Defenition erfolgte an an derer stelle. Aber Du hast Recht, ich hätte es vorher aufräumen sollen.
zu 2. Warum verwendest du ein MouseDown-Event, wenn du einen ValueChange abfragen willst? (Add-Control)
Weil ich dachte, drücken und los lassen führt evtl zu 2 Änderungen 0 1 0 ...
zu 3. Ok, wenn es so aufwendig ist, dann werde ich doch zur Tabelle wechseln. Denn es wird noch ein wenig aufwendiger, wenn das Array größer wird und man mit dem Slider an eine andere Stelle scrollt. Dann reicht die einfache "Umrechnung" nicht mehr aus... Werden Zahlenelemente in ener Tabelle als String gehandhabt? Oder sind die Werte unmittelbar zugänglich?
Liebe Grüsse,
BrainDrain
Hallo BrainDrain,
eine Tabelle ist (im Grunde) ein 2D-Array of Strings.
Da dein Benutzer nicht direkt in der Tabelle editieren (können) soll, ist das aber unerheblich. Du nutzt die Tabelle nur zur Anzeige (!), welches Datenformat du intern verwendest, bleibt dir überlassen und kümmert den Benutzer nicht...