LabVIEWForum.de
Eigenschaften u. Steuerung, Tabellenbedienelement - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Eigenschaften u. Steuerung, Tabellenbedienelement (/Thread-Eigenschaften-u-Steuerung-Tabellenbedienelement)

Seiten: 1 2


Eigenschaften u. Steuerung, Tabellenbedienelement - Chasing - 15.01.2008 02:11

Hallo liebe LabVIEW Gemeinde.

Ich stehe hier vor einen Problem und weiß nicht so ganz, ob ich es überhaupt lösen kann und bitte um eure Hilfe.

Beim Versuch ein Tabellenbedienelement per Eigenschaftsknoten zu gestalten, ist mir aufgefallen das es wohl garkeine Eigenschaft gibt, um die Zellenhintergrundfarbe einzelner Zellen festzulegen, außer sie ist aktiv.

Ich möchte jeder einzelnen Zelle, eine Farbe anhand des Wertes, der in der Zelle steht zuweisen, besteht diese Möglichkeit?
Bsp. Werte 0-500 rot, 500-1000 grün, 1000-1500 blau

2. Problem: wie realisiert man eine Tastatursteuerung der einzelnen Zellen?
Ich muß duch die Pfeiltasten steuern, in welche Zelle ich einen Wert schreiben möchte, und diesen Wert mit den Tasten "+" und "-" erhöhen oder senken können.
Mir fehlt hier absolut der Ansatz.

Wenn euch irgendetwas dazu einfällt wäre ich sehr glücklich wenn ihr mich an euren Ideen teilhaben lasst.

Liebe Grüße
Andreas


Eigenschaften u. Steuerung, Tabellenbedienelement - Achim - 15.01.2008 07:26

Zitat:Beim Versuch ein Tabellenbedienelement per Eigenschaftsknoten zu gestalten, ist mir aufgefallen das es wohl garkeine Eigenschaft gibt, um die Zellenhintergrundfarbe einzelner Zellen festzulegen, außer sie ist aktiv.

Ich möchte jeder einzelnen Zelle, eine Farbe anhand des Wertes, der in der Zelle steht zuweisen, besteht diese Möglichkeit?
Bsp. Werte 0-500 rot, 500-1000 grün, 1000-1500 blau
Wandle das 2D-String-Array (= Value) der Tabelle komplett mit "StringToNumber" in ein 2D-Numeric-Array. In diesem Array prüfst über geschachtelte FOR-Schleifen jeden einzelnen Wert ab...und stellst dann über die Eigenschaft "ActiveCell" die entsprechende Farbe ein.
[attachment=10650]Lv80_img
[attachment=10649]
Zitat:2. Problem: wie realisiert man eine Tastatursteuerung der einzelnen Zellen?
Ich muß duch die Pfeiltasten steuern, in welche Zelle ich einen Wert schreiben möchte, und diesen Wert mit den Tasten "+" und "-" erhöhen oder senken können.
Mir fehlt hier absolut der Ansatz.
Mir grad auch...


Eigenschaften u. Steuerung, Tabellenbedienelement - Achim - 15.01.2008 08:04

' schrieb:2. Problem: wie realisiert man eine Tastatursteuerung der einzelnen Zellen?
Ich muß duch die Pfeiltasten steuern, in welche Zelle ich einen Wert schreiben möchte, und diesen Wert mit den Tasten "+" und "-" erhöhen oder senken können.
Mir fehlt hier absolut der Ansatz.

So gehts:

[attachment=10631]Lv80_img


Eigenschaften u. Steuerung, Tabellenbedienelement - Chasing - 16.01.2008 12:13

Hallo Achim,

vielen vielen Dank, nun seh ich durch, auf "ActiveCell" wär ich so schnell nicht gekommen.
Deine VI´s sind beide spitzenklasse und helfen mir sehr.

Das Färben jedoch scheint sehr rechenintensiv zu sein, bei 200x16 Werten dauert die Angelegenheit doch sehr lang wenn man bedenkt das ich hier mit 2x2,3GHz rechne und dennoch über 10 Sekunden brauche.
Ich muß zwar zpäter nur die geänderten Werte aktualisieren aber vorher werden die Werte aus einer Datei eingelesen und das dauert viel zu lang wenn ich daran denke, das diese Geschichte auf einem 150MHz embedded System laufen muß.

Liegt es an dem Eigenschaftsknoten, die ja bekanntermaßen eher lahm sind oder was ist der Performancekiller?

Test-VI ist im Anhang, ich hoffe das Runterspeichern auf 8.0 hat geklappt.


Eigenschaften u. Steuerung, Tabellenbedienelement - Achim - 16.01.2008 12:25

' schrieb:Das Färben jedoch scheint sehr rechenintensiv zu sein, bei 200x16 Werten dauert die Angelegenheit doch sehr lang wenn man bedenkt das ich hier mit 2x2,3GHz rechne und dennoch über 10 Sekunden brauche.
Liegt es an dem Eigenschaftsknoten, die ja bekanntermaßen eher lahm sind oder was ist der Performancekiller?

Ja, das liegt an den PropertyNodes...und da kannste auch nix dran machen! Es wird halt jede Zelle einzeln geprüft und gefärbt...


Eigenschaften u. Steuerung, Tabellenbedienelement - Chasing - 16.01.2008 12:57

Diese Mistdinger *g* aber die Lösung ist dennoch denkbar einfach.
Es liegt einfach daran, dass es neu gezeichnet wird, wenn man nun die Tabelle bevor man die Farben setzt, auf nicht sichtbar und erst wenn alle Farben gesetzt sind, wieder auf sichtbar Stellt, werden die Farben in Sekundenbruchteilen berechnet und anschließend sofort angezeigt.

Jetzt klappt alles.

Nochmal vielen Dank @Achim!


Eigenschaften u. Steuerung, Tabellenbedienelement - Achim - 16.01.2008 14:02

' schrieb:Es liegt einfach daran, dass es neu gezeichnet wird, wenn man nun die Tabelle bevor man die Farben setzt, auf nicht sichtbar und erst wenn alle Farben gesetzt sind, wieder auf sichtbar Stellt, werden die Farben in Sekundenbruchteilen berechnet und anschließend sofort angezeigt.

Sehr guter Trick! Wenn's für den Benutzer nicht zu verwirrend ist, wenn die Tabelle erst "später" eingeblendet wird, ist das optimal! Und für's ersetzen einzelner Zellen kann sie ja sichtbar bleiben...


Eigenschaften u. Steuerung, Tabellenbedienelement - jg - 16.01.2008 14:17

Probiers auch noch mal mit der hier vorgeschlagenen Methode (DeferPanelUpdate).

MfG, Jens


Eigenschaften u. Steuerung, Tabellenbedienelement - Chasing - 16.01.2008 17:53

@Jens G, ja das klappt auch super, vielen Dank für den Vorschlag.

Wie ich sehe hat alles Vor- und Nachteile, ich versuche das alles jetzt mal so zu kombinieren wie es für mich, am günstigsten ist.

Danke euch nochmal!

Liebe Grüße
Andreas


Eigenschaften u. Steuerung, Tabellenbedienelement - jg - 16.01.2008 21:25

Hallo,

schön, dass du das Gefühl hast, es geht mit DeferPanelUpdate oder Visible schnell, aber ich bin der Meinung, du hast da einen dicken Bug in deinem Programm, das du hier hochgeladen hast.

Da besteht nämlich eine riesige Race-Condition:
[attachment=10716]

Beim ersten Aufruf des VI wird nämlich das Table-Control ausgelesen, bevor es überhaupt über die lokale Variable gefüllt wird. Was du da hochgeladen hast, ist ganz ganz schlechter LV-Programmierstil...

Ich habe das mal geändert, und lande auf meinem Rechner immer bei so ca. 8 Sekunden, bis dann alle Felder neu eingefärbt sind (ohne DeferPanelUpdate dauert es ca. 1 Sekunde länger).

Probier doch mal folgende Variante, kann mir nicht denken, dass das bei dir "ratzfatz" geht:

Lv82_img[attachment=10715]

MfG, Jens