20.11.2007, 09:58
Beitrag #1
|
s200rs
LVF-Gelegenheitsschreiber
 
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Drag&Drop bei Listenfeld
Hallo,
ich wollte gerne aus einem Listenfeld Zeilen per Drag auswählen und in ein zweites per Drop einfügen. Das ganze funktioniert auch soweit.
Nun wäre es hilfreich, wenn an der Stelle bzw. Zeile, wo ich die gezogene Zeile in dem zweiten Feld einfügen möchte, eine Markierung (z.B. eine Trennlinie) erscheinen würde, damit man zweifelsfrei sehen kann, zwischen welchen vorhandenen Zeilen die neue eingeordnet wird (z.B. gibt es so etwas bei Case-Strukturen im Menü "Cases neu anordnen...").
Weiß jemand, ob es da schon eine vorgefertigte Routine gibt, oder wie man anders so etwas erstellen kann?
________________
LV 7.1; 8.5
|
|
|
20.11.2007, 10:07
Beitrag #2
|
|
|
20.11.2007, 10:38
Beitrag #3
|
s200rs
LVF-Gelegenheitsschreiber
 
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Drag&Drop bei Listenfeld
' schrieb:Wie hast du's zwischen rein bekommen?
das war ja eigentlich die leichteste Aufgabe.
Ich verwende eine Event-Struktur, beim Event "Ablegen" im Ziel-Listenfeld erhalte ich links im Ereignisdaten-Knoten die Koordinaten des Mauszeigers im Moment des Events. Über eine Verhältnisrechnung von Listenfeld-Höhe, y- Koordinate der Maus und Zeilenanzahl der Liste habe ich ausrechnen lassen, auf welcher Zeile der Mauszeiger steht und an dieser Stelle in das Array "Objekt-Namen" des Listenfeldes den neuen String eingefügt.
Natürlich geht das ganze auch einfacher  . Auf der Suche nach einer Lösung für obiges Problem bin ich heut drauf gestoßen, daß es eine Methode für Listenfelder gibt, welche die Zeilennummer in Abhängigkeit der Mausposition berechnet.
Funktioniert auch soweit, man muß in beiden Fällen am Ende nur eine Unterscheidung machen, ob die errechnete Zeilennummer größer als die Anzahl der Objektnamen / belegten Zeilen der Liste ist. Wenn ja (also als Beispiel in ein Array von 5 Elementen ein neues an Index 10 einfügen erzeugt einen Fehler), muß als Index die Größe des Arrays übergeben werden, damit das neue Element ans Ende angehängt wird. Wenn nein dann wird die errechnete Zeile als Einfüge-Index übergeben.
Nur dumm ist eben, daß man nicht genau den Übergang zwischen den Zeilen nicht sieht und somit manchmal der String in der falschen Zeile eingefügt wird. Daher wäre eine Markierung nicht schlecht. (Geht ja irgendwie, aber wie?)
________________
LV 7.1; 8.5
|
|
|
20.11.2007, 11:20
Beitrag #4
|
Achim
*****
    
Beiträge: 4.226
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Drag&Drop bei Listenfeld
' schrieb:Nur dumm ist eben, daß man nicht genau den Übergang zwischen den Zeilen nicht sieht und somit manchmal der String in der falschen Zeile eingefügt wird. Daher wäre eine Markierung nicht schlecht. (Geht ja irgendwie, aber wie?)
Hi,
ich hab das jetzt mal mit der von dir vorgeschlagenen Methode "Point To Row Column" gemacht und auch die Unterscheidung "hintendran oder mittenrein" gleich eingebaut...funktioniert tatsächlich tadellos!
Und: Bei mir (LV8.5) wir der von dir gewünschte Trennstrich (= "Ist-Position") angezeigt! Ich musste nur noch ein "+1" an die ausgegebene Row der genannten Methode machen, dann passt's!
GEIL!
Siehe den Trennstrich auf dem Bild:
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
20.11.2007, 12:09
Beitrag #5
|
s200rs
LVF-Gelegenheitsschreiber
 
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Drag&Drop bei Listenfeld
' schrieb:ich hab das jetzt mal mit der von dir vorgeschlagenen Methode "Point To Row Column" gemacht und auch die Unterscheidung "hintendran oder mittenrein" gleich eingebaut...funktioniert tatsächlich tadellos!
Und: Bei mir (LV8.5) wir der von dir gewünschte Trennstrich (= "Ist-Position") angezeigt!
OK, ist ja schön, wenn ich Dir helfen konnte und wenn's klappt  .
Hab auch bei mir das Inkrement eingefügt, aber das beeinflußt ja nur die Zeilennummer.
Aber der Strich erscheint bei mir nicht.
Vielleicht liegt das Problem ja woanders, denn bei mir erscheint das Verboten-Symbol, auch wenn ich mit der Maus über das Listenfeld fahre. Ich habe aber die Eigenschaft "Ablegen möglich" dieses Listenfeldes aktiviert, und trotzdem verschwindet das Symbol nicht.
Vielleicht liegt's ja daran. Vielleicht verwandelt sich der Cursor von dem Verboten-Symbol außerhalb des Feldes ja in die Trennlinie, wenn er in den Bereich der Listenfeldes kommt.
Aber wie stelle ich das an? Wie geht das bei Dir?
________________
LV 7.1; 8.5
|
|
|
20.11.2007, 12:33
Beitrag #6
|
Achim
*****
    
Beiträge: 4.226
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Drag&Drop bei Listenfeld
' schrieb:Aber wie stelle ich das an? Wie geht das bei Dir?
Hi,
folgende Einstellungen hab ich an der MultiColumnListbox:
Verwenden tu ich das Event "Drop", so lese ich die Daten:
Bist du jetzt schlauer?
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
20.11.2007, 13:12
Beitrag #7
|
s200rs
LVF-Gelegenheitsschreiber
 
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Drag&Drop bei Listenfeld
Hallo,
danke, jetzt klappt's bei mir auch.
ich hatte die Eigenschaft "Allow Drag Drop Outside Control"/"Ablegen außerhalb von Elementen möglich" aus dem Frontpanel-Menü so interpretiert, daß dadurch ermöglicht wird, Daten aus der Liste herauszuziehen und außerhalb abzulegen. Noch blöder ist die Formulierung dieser Eigenschaft im Eigenschaftsknoten des Blockdiagramms. Dort heißt das ganze "Ziehen aus Element zulassen". Und da ich das nicht will, habe ich diese Eigenschaft deaktiviert.
Ist halt ziemlich irreführend aus der englischen Version übersetzt. Es müßte dann eher heißen: "Ablegen von Daten von außerhalb des Elements möglich" oder so in der Art.
Danke noch mal für die Info
________________
LV 7.1; 8.5
|
|
|
20.11.2007, 17:39
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Drag&Drop bei Listenfeld
' schrieb:Hallo,
danke, jetzt klappt's bei mir auch.
ich hatte die Eigenschaft "Allow Drag Drop Outside Control"/"Ablegen außerhalb von Elementen möglich" aus dem Frontpanel-Menü so interpretiert, daß dadurch ermöglicht wird, Daten aus der Liste herauszuziehen und außerhalb abzulegen. Noch blöder ist die Formulierung dieser Eigenschaft im Eigenschaftsknoten des Blockdiagramms. Dort heißt das ganze "Ziehen aus Element zulassen". Und da ich das nicht will, habe ich diese Eigenschaft deaktiviert.
[attachment=36801:_bersetzungsfehler.gif]
Ist halt ziemlich irreführend aus der englischen Version übersetzt. Es müßte dann eher heißen: "Ablegen von Daten von außerhalb des Elements möglich" oder so in der Art.
Danke noch mal für die Info
:offtopic:Wieder mal ein klares Argument für die englische Version von LabVIEW
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
17.12.2007, 11:06
Beitrag #9
|
|
|
17.12.2007, 11:34
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2007 11:38 von Achim.)
|
|
|
| |