| |
|
|
Georg Teles | Bueno Morgen,
fand hierzu no wirklich qué salvo viele gute Drag & Drop Beispiele con Listen hier [...] - habe provisorisch a una "Einträge-schiebe-Workarea" para GridBoxen m.H. de LvSelect gebastelt
Servus
EDIT: como siempre no bastante perfekt, si uno zwischen UP & DOWN wechselt, springen el Einträge en 2 Positionen, pfeile veces más daran ...
EDIT: Hier funktionierende Versión, bastante sin LvSelect
$H Commctrl.ph
Declarar grid&
Declarar up&, down&
CLS
'unsortierte Grid porque sonst dieses Workarea no Sinn ergibt ;D
grid& = Crear("GridBox", %HWnd, "Links;0;180;Mitte;2;100;Rechts;1;80", 0, 5, 5, 400, 200)
AddStrings(grid&,"1|1|1")'Testeiträge
AddStrings(grid&,"2|2|2")
AddStrings(grid&,"3|3|3")
AddStrings(grid&,"4|4|4")
AddStrings(grid&,"5|5|5")
AddStrings(grid&,"6|6|6")
AddStrings(grid&,"7|7|7")
up& = Crear("Button",%HWnd,"UP",5,220,100,20)
down& = Crear("Button",%HWnd,"DOWN",115,220,100,20)
Mientras que 1
CheckStat()'Buttons de-/ aktivieren
waitinput
If Clicked(up&)
moveUP()
ElseIf Clicked(down&)
moveDOWN()
EndIf
EndWhile
Proc CheckStat
If GetCount(grid&) > 0
EnableWindow up&,1
EnableWindow down&,1
Más'si Liste leer, deaktiviere Buttons !
EnableWindow up&,0
EnableWindow down&,0
EndIf
If GetSelCount(grid&) = 1
EnableWindow up&,1
EnableWindow down&,1
Más'si mehrere Einträge markiert son, deakiviere Buttons !
EnableWindow up&,0
EnableWindow down&,0
EndIf
ENDPROC
Proc moveUP
Declarar tx$, pos&
If GetCurSel(grid&) > 0'si no erste Position o. no Pos. = 0 angeklickt wurde, entonces ...
pos& = GetCurSel(grid&)'... position auslesen
tx$ = GetString$(grid&,pos&)'Eintrag el Position speichern - WICHTIG: GetString$ uso como
'GetText$ sólo el erste Spalte ausließt - GetString$ ließt komplette Línea de
DeleteString(grid&,pos&)'alten Eintrag löschen ...
InsertString(grid&,(pos&-1),tx$)'... a Position MINUS 1 hiinzufügen
tx$ = Substr$(tx$,1,"|")'en Grid con 1 Spalte & Listbox no nötig
Seleccione String(grid&,-1,tx$)'en Grid con 1 Spalte & Listbox no nötig
SetFocus(grid&)'Fokus en Grid así Button no deaktiviert se s. Proc CheckStat
EndIf
ENDPROC
Proc moveDOWN
Declarar tx$, pos&
If (GetCurSel(grid&) < (GetCount(grid&)-1)) & (GetCurSel(grid&) >= 0)'si Pos. zwischen 1. (pos=0) y letztem Eintrag es, entonces ...
pos& = GetCurSel(grid&)'... position auslesen
tx$ = GetString$(grid&,pos&)'Eintrag el Position speichern - WICHTIG: GetString$ uso como
DeleteString(grid&,pos&)'alten Eintrag löschen ...
InsertString(grid&,(pos&+1),tx$)'... a Position PLUS 1 hiinzufügen
tx$ = Substr$(tx$,1,"|")'en Grid con 1 Spalte & Listbox no nötig
Seleccione String(grid&,-1,tx$)'en Grid con 1 Spalte & Listbox no nötig
setfocus(grid&)'Fokus en Grid así Button no deaktiviert se s. Proc CheckStat
EndIf
ENDPROC
|
|
|
| |
|
|
|
Georg Teles | Vorhin una kleiner Fehler gewesen, por lo tanto sprang él en 1-2 Zeilen ... en Grids con más que 2 Spalten muss beachtet voluntad, dass beim Selektieren el Línea sólo después de erster Spalte gesucht se ! por lo tanto
el war mein Denkfehler vorhin y él gab con en GetCurSel -1 zurück aber ahora es el Code sauber ! |
|
|
| |
|
|