LabVIEWForum.de - Zugriff auf Tabellenelement

LabVIEWForum.de

Normale Version: Zugriff auf Tabellenelement
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leuts,

ich habe ein großes Problem beim Überprüfen einer Eingabe in einen Tabellenelement. Ich habe mir im Frontpanel eine Tabelle mit zwei Zeilen erzeugt. Dort sollen werde eingegeben werden - nur Ziffern und ein Dezimalpunkt. Wenn ein Komma eingegeben wird, dann soll daraus ein Dezimalpunkt erstellt werden. Andere Zeichen sollen ignoriert werden - ausser Löschen und Return.

Ich bekomme es einfach nicht hin, den Wert in einem Tabellenfeld zu überprüfen. Ich habe hier mal mein bisheriges Programm angehängt - es ist in LabVIEW 2012 erstellt worden.

Ich wäre schon glücklich, wenn ich wenigstens beim Wechsel in eine andere Spalte oder nach dem Return die vorige Eingabe überprüfen könnte, ob fehlerhafte Zeichen vorhanden sind, aber es gelingt mir einfach nicht. Kann mir von Euch vielleicht jemand einen Tipp geben?
Hallo Hasenfuss,

du benutzt zwar schon ein Filter-Event (KeyPress?) - aber du filterst nicht!

Du solltest ungewollte Tastendrücke auch wirklich verwerfen, genau dafür bietet die Eventstruktur einen Anschluss an…
Du bist doch schon quasi so weit gewesen, dass nur nur Ziffern und Punkt/Komma eingeben kannst... Im Case "Key Down?" musst du nur die Buchstabeneingaben per True an der rechten Data-Node "Discard" verwerfen.

Welches Tabellenelement geändert wurde, das wertest du besser in der Event-Struktur aus, hier hast du an den Nodes "OldValue" und "NewValue" die Werte vor und nach der Datenänderung.
Wenn sich die Größe der Tabelle durch das Editieren nicht geändert hat, dann funktioniert z.B. diese Suche:
[attachment=53416]

Denn Fall, wenn ein leeres Element editiert wurde, darfst du dir selber überlegen.

Gruß, Jens
Vielen Dank für Eure Antworten. Ich hab grad noch ein anderes Problem, was mich grade ziemlich fertig macht - ich kann nicht nach einem Punkt in einem String suchen:

Ich möchte wissen, ob ein Punkt in einem String vorhanden ist. Bei Komma oder Buchstaben liefert die Funktion ein -1 im Offset, wenn es nicht vorhanden ist bzw. dann die Position+1 nach dem ersten Vorhandensein. Beim "." wird kontinuierlich bei Offset eine 1 ausgeben.
Gut, das mit dem Punkt hat jetzt hingehauen.

Ich habe meine Eingaben jetzt soweit gefiltert, dass nur 0-9 zulässig ist, ein Decimalkomma in einen Decimalpunkt umgewandelt wird und dass auch nur einmal ein Punkt in dem String vorkommen darf. Ist bereits vorher in dem String im aktuellen Feld ein . vorhanden, dann kann kein Punkt eingetippt werden.

Jetzt habe ich ein Problem, wenn ich ein Zeichen löschen will. Ich kann nicht auf den "aktuellen" String zugreifen, der grade in Bearbeitung ist. Angenommen, ich lösche mit der DEL-Taste ein Zeichen und es ist der Punkt gewesen - dann muss ich die Punktvorhandesein-Variable wieder auf false setzen, aber ich weis nicht, wie ich das hinbekommen soll. Könnt ihr mir da weiterhelfen?
...was ist denn nun mit deinem Ursprungsproblem?!
Du gehst auf die Lösungsvorschläge von Gerd und Jens mit keiner Silbe ein, fügst statt dessen ein neues Problem an, das du danach auch gleich selbst löst und hast dann auch gleich wieder ein nächstes Problem.

Ich komme bei deinen Problemerstellungen- und Lösungen nicht mehr hinterher.

Gruß, Marko
Mal ein ganz anderer Vorschlag zur Lösung deines Problems: https://lavag.org/files/file/31-type-sensitive-popup/

Gruß, Jens
Referenz-URLs