INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Array Scrollbalken abfragen



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!

08.10.2012, 03:38 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2012 03:42 von Novgorod.)
Beitrag #1

Novgorod Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2008

2016
2006
EN

0
Sonstige
Array Scrollbalken abfragen
Ich stecke gerade ein wenig bei einem "Schönheitsfehler" fest...
Es geht um eine eigentlich simple Sache: Wenn der User ein 2D-Array manuell scrollt, sollen 1D-Arrays (als Zeilen- und Spaltenheader des 2D-Arrays gedacht) automatisch mitscrollen, siehe Anhang.

Da es offenbar kein Scroll- oder "Index-changed"-Event für Arrays gibt, ist die übliche Behelfslösung Maus-Events abzufragen (Mouse Down, Mouse Move etc.). Nun hat Windows aber die "Komfortfunktion", dass man den Scrollbalken mit der Maus "festhalten" kann, dabei die Maus aber komplett vom Array und sogar aus dem Programmfenster rausbewegen kann, während in der anderen Dimension weiterhin gescrollt werden kann.
Wenn man also Maus-Events nur auf dem entsprechenden Array abfragt, deckt man nicht alle Fälle ab - wenn die Maus beim Scrollen das Array verlässt, gibts kein Event, obwohl weitergescrollt werden kann (und er Index sich ändert). Man kann sich hier auch noch relativ einfach Abhilfe schaffen, indem man Maus-Events auf dem Pane abfragt - mit einem Klick auf dem Array wird ein "Scrollvorgang" gestartet und dann werden die Maus-Events auf dem Pane registriert und verarbeitet und bei "Mouse Up" wieder beendet (siehe Anhang).

Was ist aber, wenn die Maus beim Scrollen nicht nur das Array, sondern das vi-Fenster (Pane) verlässt? Das Scrollen geht dann immernoch (s.o., Windows-Feature), man kann aber keine Maus-Events mehr abfragen, weil die Maus ja garnicht mehr auf dem Pane ist...
Weiß jemand eine elegante Lösung, wie man z.B. trotzdem noch Maus-Events bekommt? Es würde auch reichen, wenn man den Scrollvorgang programmatisch einfach abbrechen könnte, sobald die Maus das Pane verlässt (also sowas wie ein "Mouse Up" Event an Windows schicken).
Eine brachiale Methode wäre es einfach permanent den Array-Index abzufragen, aber das ist eine unnötige Performanceverschwendung, daher sollte das schon irgendwie erst durch ein Event ausgelöst werden...


Angehängte Datei(en)
12.0 .vi  multiscroll.vi (Größe: 16,13 KB / Downloads: 224)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.10.2012, 06:04
Beitrag #2

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Array Scrollbalken abfragen
(08.10.2012 03:38 )Novgorod schrieb:  Eine brachiale Methode wäre es einfach permanent den Array-Index abzufragen, aber das ist eine unnötige Performanceverschwendung.


Wenn du dies in den Timeout-Case hängst und diesen nur all 250ms aufrufst, sollte die Performance nicht sonderlich darunter leiden. Wichtig ist ja nur, das in diesem einen Fall, die Indizes der Row/Header-Arrays nachgezogen werden, sollte der User wirklich so interagieren.


Als alternative könntest du auch eine Tabelle nutzen, da kann man direkt die Row/Header-Arrays eintragen und das scrollen funktioniert dann automatisch Smile



Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.10.2012, 18:45
Beitrag #3

Novgorod Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2008

2016
2006
EN

0
Sonstige
RE: Array Scrollbalken abfragen
Moin,

eine Tabelle ist für den Zweck eher schlecht geeignet, da ich in den Headern numerische Controls (mit data entry limits, increment/decrement, display format etc.) und keine Strings haben will und eine ordentliche Konvertierung recht aufwendig wäre. Außerdem sind die Möglichkeiten, die Header grafisch vom Tabelleninhalt abzutrennen, sehr beschränkt.

Im Timeout-Case habe ich schon andere Sachen drin, die alle 50ms ausgeführt werden. Es würde auch dann noch sicher keinen spürbaren Einfluss auf die Performance haben, aber man ist ja geneigt so wenig wie möglich zu pfuschen Wink...

Jedenfalls habe ich jetzt eine "Hybridlösung". Unter "Connectivity -> Input Device Control" kann man den Maus-Status abfragen, egal wo der Cursor ist. Nun kann man mit einem Klick auf das Array den "Scrollvorgang" starten und im Timeout-Case permanent den Array-Index synchronisieren und gleichzeitig die Maus abfragen, ob die Maustaste noch gedrückt ist. Lässt man die Maustaste los, beendet dies den Scrollvorgang (nach der Timeoutzeit natürlich). Das ist zwar keine echte Event-Lösung, aber den Performance-Pfusch gibts dann zumindest nur solange man die Maustaste gedrückt hält, was normalerweise nicht sehr lang ist...


Angehängte Datei(en)
12.0 .vi  multiscroll2.vi (Größe: 18,35 KB / Downloads: 243)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Bildlaufleiste/Scrollbalken (einer Tabelle) verbreitern Horst 6 6.410 15.06.2020 09:34
Letzter Beitrag: Horst
  Subpanel mit fixierten Scrollbalken labview_Gert 5 3.956 08.01.2013 14:43
Letzter Beitrag: labview_Gert
  Subpanel Scrollbalken entfernen Tatzel 3 6.117 27.08.2007 18:27
Letzter Beitrag: cb
  Frontpanel ohne Scrollbalken kaloy 2 5.874 09.05.2007 09:33
Letzter Beitrag: kaloy
  Boolean Array abfragen Jacktheripper 2 4.098 30.03.2006 10:19
Letzter Beitrag: Jacktheripper

Gehe zu: