Italia
Fonte/ Codesnippets

GridBox Einträge nach Oben Unten Verschieben einfaches Workarea

 

Georg
Teles
Guten Morgen,

fand hierzu nicht wirklich was ausser viele gute Drag & Drop Beispiele mit Listen hier  [...]  - habe provisorisch dazu ein "Einträge-schiebe-Workarea" per GridBoxen m.H. von LvSelect gebastelt

Servus

EDIT:
wie immer nicht ganz perfekt, wenn man zwischen UP & DOWN wechselt, springen die Einträge um 2 Positionen, pfeile mal weiter daran ...

EDIT:
Hier funktionierende Version, ganz ohne LvSelect
 $H Commctrl.ph
Declare grid&
Declare up&, down&
CLS
'unsortierte Grid weil sonst dieses Workarea keinen Sinn ergibt ;D
grid& = Create("GridBox", %HWnd, "Links;0;180;Mitte;2;100;Rechts;1;80", 0, 5, 5, 400, 200)
AddString(grid&,"1|1|1")'Testeiträge
AddString(grid&,"2|2|2")
AddString(grid&,"3|3|3")
AddString(grid&,"4|4|4")
AddString(grid&,"5|5|5")
AddString(grid&,"6|6|6")
AddString(grid&,"7|7|7")
up& = Create("Button",%HWnd,"UP",5,220,100,20)
down& = Create("Button",%HWnd,"DOWN",115,220,100,20)

While 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

    Else'wenn Liste leer, deaktiviere Buttons !

        EnableWindow up&,0
        EnableWindow down&,0

    EndIf

    If GetSelCount(grid&) = 1

        EnableWindow up&,1
        EnableWindow down&,1

    Else'wenn mehrere Einträge markiert sind, deakiviere Buttons !

        EnableWindow up&,0
        EnableWindow down&,0

    EndIf

EndProc

Proc moveUP

    Declare tx$, pos&

    If GetCurSel(grid&) > 0'wenn nicht erste Position bzw. nicht Pos. = 0 angeklickt wurde, dann ...

        pos& = GetCurSel(grid&)'... position auslesen
        tx$ = GetString$(grid&,pos&)'Eintrag der Position speichern - WICHTIG: GetString$ verwenden da
        'GetText$ nur die erste Spalte ausließt - GetString$ ließt komplette Zeile aus
        DeleteString(grid&,pos&)'alten Eintrag löschen ...
        InsertString(grid&,(pos&-1),tx$)'... an Position MINUS 1 hiinzufügen
        tx$ = SubStr$(tx$,1,"|")'bei Grid mit 1 Spalte & Listbox nicht nötig
        SelectString(grid&,-1,tx$)'bei Grid mit 1 Spalte & Listbox nicht nötig
        SetFocus(grid&)'Fokus auf Grid damit Button nicht deaktiviert wird s. Proc CheckStat

    EndIf

EndProc

Proc moveDOWN

    Declare tx$, pos&

    If (GetCurSel(grid&) < (GetCount(grid&)-1)) & (GetCurSel(grid&) >= 0)'wenn Pos. zwischen 1. (pos=0) und letztem Eintrag ist, dann ...

        pos& = GetCurSel(grid&)'... position auslesen
        tx$ = GetString$(grid&,pos&)'Eintrag der Position speichern - WICHTIG: GetString$ verwenden da
        DeleteString(grid&,pos&)'alten Eintrag löschen ...
        InsertString(grid&,(pos&+1),tx$)'... an Position PLUS 1 hiinzufügen
        tx$ = SubStr$(tx$,1,"|")'bei Grid mit 1 Spalte & Listbox nicht nötig
        SelectString(grid&,-1,tx$)'bei Grid mit 1 Spalte & Listbox nicht nötig
        setfocus(grid&)'Fokus auf Grid damit Button nicht deaktiviert wird s. Proc CheckStat

    EndIf

EndProc

 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

06.02.2016  
 




Georg
Teles
Vorhin ein kleiner Fehler gewesen, daher sprang er um 1-2 Zeilen ... bei Grids mit mehr als 2 Spalten muss beachtet werden, dass beim Selektieren der Zeile nur nach erster Spalte gesucht wird ! daher
tx$ = SubStr$(tx$,1,"|")
SelectString(grid&,-1,tx$)

das war mein Denkfehler vorhin und er gab mit bei GetCurSel -1 zurück aber jetzt ist der Code sauber !
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

06.02.2016  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.782 Views

Untitledvor 0 min.
Gast.0815 vor 4 Tagen
Georg Teles11.08.2024
Member 862464112.05.2024
Walter03.05.2024
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

Georg Teles (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie