Français
Forum

Merker chez Drag&Drop qui Gridbox reagiert pas

 
- page 1 -



Thomas
Freier
Angelehnt à Andreas Beispiel pour une Listbox voulais je aus optischen Trouvé aussi une Merker avons. malheureusement peux je ihn pas en supplément bewegen, dass il sich bewegt.
comment gehts ?
 $H Windows.ph
 $H Messages.ph
 $H ListView.ph
 $H commctrl.ph
DEF $DRAGLISTMSGSTRING "commctrl_DragListMsg"
DEF &DL_BEGINDRAG 1157
DEF &DL_DRAGGING 1158
DEF &DL_DROPPED 1159
DEF &DL_MOVECURSOR 3
DEF &DL_COPYCURSOR 2
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,l%,L.SubItem$
Faible LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Paramètres  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Retour LVHTI#.SubItem&

ENDPROC

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

proc LvDeSelect'deselectieren

    parameters Lv&,Item&
    Déclarer s#
    dim s#,1024
    long s#,12=0
    long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    dispose s#

endproc

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

proc LvSelect'selectieren

    parameters Lv&,Item&
    Déclarer s#
    dim s#,1024
    long s#,12=$2
    long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    sendmessage(lv&,~LVM_SETHOTITEM ,item&,0)
    sendmessage(lv&,~LVM_ENSUREVISIBLE ,Item&,0)
    dispose s#

endproc

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
Struct POINT = X&,Y&
Struct DRAGLISTINFO = uNotification&,hWnd&,ptCursor!POINT
Var FirstItem& = 0
Var LastItem& = 0
Var MoveString$ = »
Var MoveCursor& = ~LoadCursor(~GetModuleHandle("shell32.dll"),1003)
'oui c'est ca cet spezielle annonce muss registiert volonté
'avec cela cela la fenêtre qui Drag&Drop Operationen verarbeiten peux.
Var DragMSG& = ~RegisterWindowMessage($DRAGLISTMSGSTRING)
CLS
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
Var Ende& = 0
Var dlg& = @Créer("ChildWindow", %hwnd, "Liste", 80, 60,300,300)
var  Text$ = "Name;0;140"
var  draglist& = Créer("GridBox", dlg&, text$, 0, 80, 14, 100, 220)
'qui Listbox pour Drag&Drop vobereiten
Externe("comctl32.dll","MakeDragList",Draglist&)
Addstring(Draglist&,"Eintrag")
Addstring(Draglist&,"Auftrag")
Addstring(Draglist&,"Anton")
Addstring(Draglist&,"Otto")
Addstring(Draglist&,"Werner")
Addstring(Draglist&,"Karl")
SubClass dlg&,1

WhileNot Ende&

    Waitinput

Endwhile

SubClass dlg&,0
end

SubClassProc

    Si SubClassMessage(dlg&,DragMSG&)

        Var Info# = New(DRAGLISTINFO)
        locate 0,0
        l% =  LV_HitTest(Draglist&,%mousex,%mousey)
        L.SubItem$=GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)
        Info# = &slParam

        Si Info#.uNotification& = &DL_BEGINDRAG'Drag&Drop beginnt et Item merken

            FirstItem& = LVHTI#.Item&
            imprimer FirstItem&, " pour "
            'Marker zeichnen, muss pas son, augmenté mais qui Sichtbarkeit
            Externe("comctl32.dll","DrawInsert",dlg&,Draglist&,Firstitem&)
            MoveString$ = GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)'Item-Text merken
            Set("WinProc", 0)
            ~SetCursor(MoveCursor&)
            Retour &DL_COPYCURSOR

        ElseIf Info#.uNotification& = &DL_DRAGGING'Drag&Drop ist im Gange

            LastItem& = LVHTI#.Item&
            locate 0,10
            Imprimer LastItem&
            LvSelect  Draglist&,LastItem&
            'Marker neuzeichnen
            Externe("comctl32.dll","DrawInsert",dlg&,Draglist&,LastItem&)
            Set("WinProc", 0)
            'Item markieren
            SendMessage(DragList&,~Lb_SETCURSEL,LastItem&,0)
            ~SetCursor(MoveCursor&)

        ElseIf Info#.uNotification& = &DL_DROPPED'Drag&Drop ist finissez

            LastItem& = LVHTI#.Item&

            Si Lastitem& <> -1

                'Marker entfernen
                Externe("comctl32.dll","DrawInsert",dlg&,Draglist&,-1)
                'cela erste gemerkte Item effacer
                DeleteString(DragList&,FirstItem&)
                'et à qui Position des letzten gemerkten Items insérer
                InsertString(DragList&,LastItem&,MoveString$)
                Set("WinProc", 0)
                LvSelect  Draglist&,LastItem&

            EndIf

        EndIf

    EndIf

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »


Andreas
Miethe


Thomas Freier (11/21/10)
Angelehnt à Andreas Beispiel pour une Listbox voulais je aus optischen Trouvé aussi une Merker avons. malheureusement peux je ihn pas en supplément bewegen, dass il sich bewegt.
comment gehts ?


allô Thomas,

pour Listviews ist cela aussi pas gedacht.
Pour cette nimmt on Insert-Marks
 $H Windows.ph
 $H Messages.ph
'$H ListView.ph
 $H commctrl.ph
DEF &LVM_SETINSERTMARK 4262
Struct LVINSERTMARK = cbSize&,dwFlags&,iItem&,dwReserved&
DEF $DRAGLISTMSGSTRING "commctrl_DragListMsg"
DEF &DL_BEGINDRAG 1157
DEF &DL_DRAGGING 1158
DEF &DL_DROPPED 1159
DEF &DL_MOVECURSOR 3
DEF &DL_COPYCURSOR 2
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,l%,L.SubItem$
Faible LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Paramètres  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Retour LVHTI#.SubItem&

ENDPROC

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

Proc LvDeSelect'deselectieren

    Paramètres Lv&,Item&
    Déclarer s#
    Faible s#,1024
    LONG s#,12=0
    LONG s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    dispose s#

ENDPROC

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

Proc LvSelect'selectieren

    Paramètres Lv&,Item&
    Déclarer s#
    Faible s#,1024
    LONG s#,12=$2
    LONG s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    sendmessage(lv&,~LVM_SETHOTITEM ,item&,0)
    sendmessage(lv&,~LVM_ENSUREVISIBLE ,Item&,0)
    dispose s#

ENDPROC

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
Struct POINT = X&,Y&
Struct DRAGLISTINFO = uNotification&,hWnd&,ptCursor!POINT
Var FirstItem& = 0
Var LastItem& = 0
Var MoveString$ = »
Var MoveCursor& = ~LoadCursor(~GetModuleHandle("shell32.dll"),1003)
'oui c'est ca cet spezielle annonce muss registiert volonté
'avec cela cela la fenêtre qui Drag&Drop Operationen verarbeiten peux.
Var DragMSG& = ~RegisterWindowMessage($DRAGLISTMSGSTRING)
CLS
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
Var Ende& = 0
Var dlg& = @Créer("ChildWindow", %hwnd, "Liste", 80, 60,300,300)
Var  Text$ = "Name;0;140"
Var  draglist& = Créer("GridBox", dlg&, text$, 0, 80, 14, 100, 220)
'qui Listbox pour Drag&Drop vobereiten
Externe("comctl32.dll","MakeDragList",Draglist&)
Addstring(Draglist&,"Eintrag")
Addstring(Draglist&,"Auftrag")
Addstring(Draglist&,"Anton")
Addstring(Draglist&,"Otto")
Addstring(Draglist&,"Werner")
Addstring(Draglist&,"Karl")
SubClass dlg&,1

WhileNot Ende&

    Waitinput

Endwhile

SubClass dlg&,0
Fin

SubClassProc

    Si SubClassMessage(dlg&,DragMSG&)

        Var structInsertMark# = New(LVINSERTMARK)
        structInsertMark#.cbSize& = 16
        structInsertMark#.dwFlags& = 1'LVIM_AFTER
        structInsertMark#.dwReserved& = 0
        Var Info# = New(DRAGLISTINFO)
        locate 0,0
        l% =  LV_HitTest(Draglist&,%mousex,%mousey)
        L.SubItem$=GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)
        Info# = &slParam

        Si Info#.uNotification& = &DL_BEGINDRAG'Drag&Drop beginnt et Item merken

            FirstItem& = LVHTI#.Item&
            imprimer FirstItem&, " pour "
            'Marker zeichnen, muss pas son, augmenté mais qui Sichtbarkeit
            structInsertMark#.iItem& = -1
            SendMessage(Draglist&, &LVM_SETINSERTMARK, 0,structInsertMark#)
            MoveString$ = GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)'Item-Text merken
            Set("WinProc", 0)
            ~SetCursor(MoveCursor&)
            Retour &DL_COPYCURSOR

        ElseIf Info#.uNotification& = &DL_DRAGGING'Drag&Drop ist im Gange

            LastItem& = LVHTI#.Item&
            locate 0,10
            Imprimer LastItem&
            LvSelect  Draglist&,LastItem&
            'Marker neuzeichnen
            structInsertMark#.iItem& = LastItem&
            SendMessage(Draglist&, &LVM_SETINSERTMARK, 0,structInsertMark#)
            Set("WinProc", 0)
            'Item markieren
            SendMessage(DragList&,~Lb_SETCURSEL,LastItem&,0)
            ~SetCursor(MoveCursor&)

        ElseIf Info#.uNotification& = &DL_DROPPED'Drag&Drop ist finissez

            LastItem& = LVHTI#.Item&

            Si Lastitem& <> -1

                'cela erste gemerkte Item effacer
                DeleteString(DragList&,FirstItem&)
                'et à qui Position des letzten gemerkten Items insérer
                InsertString(DragList&,LastItem&,MoveString$)
                Set("WinProc", 0)
                LvSelect  Draglist&,LastItem&

            EndIf

        EndIf

    EndIf

ENDPROC

 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.11.2010  
 




Thomas
Freier
allô Andreas.
merci pour qui schnelle réaction. malheureusement bekomme je keinen Merker trop voyons ???
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 




Andreas
Miethe


allô Thomas,

le son MS funktioniert cela seulement im Iconview,SmallIconview et Tileview, alors pas comme liste.
cela gilt scheinbar pas plus ab Vue, là funktioniert es aussi avec liste, daher habe je pas plus probiert. avec XP funktioniert es wohl pas

j'ai ici Vue sur dem Laptop et und dir bestens, il peut sogar qui la couleur qui Insertmark festlegen.

24 kB
Hochgeladen:21.11.2010
Downloadcounter263
Download
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.11.2010  
 



chez mir sous XP vois je beim Code de Thomas (mais aussi seulement si je per Interpreter ablaufen lasse) immerhin solch flèche au cours de je dragge:



qui mais à cette Position klebt bzw. sich pas bewegt.

10 kB
Hochgeladen:21.11.2010
Downloadcounter242
Download
 
21.11.2010  
 




Dieter
Zornow
avec Win 7 vois je aussi keinen flèche
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
21.11.2010  
 




Thomas
Freier
je werde sur den Merker verzichten et la fois pour einer Possibilité chercher, dass si D&D eingeleitet wird qui trop verschiebende la ligne andersfarbig darzustellen et pour Ende de D&D wieder aufheben.
Ist chez mir comment stochern im le brouillard, là bisher seulement avec qui Listview.dll gearbeitet.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



exposition la fois:  [...] 
 
21.11.2010  
 




Thomas
Freier
Hatte je mir aussi déjà angesehen, si aussi encore pas abgearbeitet.
Werde, pourquoi pas juste, ToolTip einsetzen, hilft oui aussi, si oublier qc, quel Text déménagé volonté sollte.
 $H Windows.ph
 $H Messages.ph
 $H ListView.ph
 $H commctrl.ph
DEF $DRAGLISTMSGSTRING "commctrl_DragListMsg"
DEF &DL_BEGINDRAG 1157
DEF &DL_DRAGGING 1158
DEF &DL_DROPPED 1159
DEF &DL_MOVECURSOR 3
DEF &DL_COPYCURSOR 2
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,l%,L.SubItem$,T_Tip&
Faible LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Paramètres  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Retour LVHTI#.SubItem&

ENDPROC

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

proc LvDeSelect'deselectieren

    parameters Lv&,Item&
    Déclarer s#
    dim s#,1024
    long s#,12=0
    long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    dispose s#

endproc

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

proc LvSelect'selectieren

    parameters Lv&,Item&
    Déclarer s#
    dim s#,1024
    long s#,12=$2
    long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    sendmessage(lv&,~LVM_SETHOTITEM ,item&,0)
    sendmessage(lv&,~LVM_ENSUREVISIBLE ,Item&,0)
    dispose s#

endproc

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
Struct POINT = X&,Y&
Struct DRAGLISTINFO = uNotification&,hWnd&,ptCursor!POINT
Var FirstItem& = 0
Var LastItem& = 0
Var MoveString$ = »
Var MoveCursor& = ~LoadCursor(~GetModuleHandle("shell32.dll"),1003)
'oui c'est ca cet spezielle annonce muss registiert volonté
'avec cela cela la fenêtre qui Drag&Drop Operationen verarbeiten peux.
Var DragMSG& = ~RegisterWindowMessage($DRAGLISTMSGSTRING)
CLS
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
Var Ende& = 0
Var dlg& = @Créer("ChildWindow", %hwnd, "Liste", 80, 60,300,300)
var  Text$ = "Name;0;140"
var  draglist& = Créer("GridBox", dlg&, text$, 0, 80, 14, 100, 220)
'qui Listbox pour Drag&Drop vobereiten
Externe("comctl32.dll","MakeDragList",Draglist&)
Addstring(Draglist&,"Eintrag")
Addstring(Draglist&,"Auftrag")
Addstring(Draglist&,"Anton")
Addstring(Draglist&,"Otto")
Addstring(Draglist&,"Werner")
Addstring(Draglist&,"Karl")
SubClass dlg&,1

WhileNot Ende&

    Waitinput

Endwhile

SubClass dlg&,0
end

SubClassProc

    Si SubClassMessage(dlg&,DragMSG&)

        Var Info# = New(DRAGLISTINFO)
        locate 0,0
        l% =  LV_HitTest(Draglist&,%mousex,%mousey)
        L.SubItem$=GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)
        Info# = &slParam

        Si Info#.uNotification& = &DL_BEGINDRAG'Drag&Drop beginnt et Item merken

            FirstItem& = LVHTI#.Item&
            imprimer FirstItem&, " pour "
            MoveString$ = GetText $(Draglist&,LVHTI#.Item&,LVHTI#.SubItem&)'Item-Text merken
            T_Tip&=Créer("Tooltip",%hwnd,Draglist&,MoveString$)
            Set("WinProc", 0)
            ~SetCursor(MoveCursor&)
            Retour &DL_COPYCURSOR

        ElseIf Info#.uNotification& = &DL_DRAGGING'Drag&Drop ist im Gange

            LastItem& = LVHTI#.Item&
            locate 0,10
            Imprimer LastItem&
            LvSelect  Draglist&,LastItem&
            Set("WinProc", 0)
            'Item markieren
            SendMessage(DragList&,~Lb_SETCURSEL,LastItem&,0)
            ~SetCursor(MoveCursor&)

        ElseIf Info#.uNotification& = &DL_DROPPED'Drag&Drop ist finissez

            LastItem& = LVHTI#.Item&

            Si Lastitem& <> -1

                'cela erste gemerkte Item effacer
                DeleteString(DragList&,FirstItem&)
                'et à qui Position des letzten gemerkten Items insérer
                InsertString(DragList&,LastItem&,MoveString$)
                Set("WinProc", 0)
                LvSelect  Draglist&,LastItem&
                DestroyWindow(T_Tip&)

            EndIf

        EndIf

    EndIf

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



je ne sais pas plus dans welchem Programme je la fois ListBox-Einträge mausverschiebbar gemacht habe mais dadurch le moi den Eintrag tout de suite pour Erreichen qui neuen la ligne déménagé habe était un weitere Kennzeichnung irgendwie garnicht notwendig.

Könnte on zusätzlich oui aussi encore un > à den Zeilenanfang qui trop verschiebenden la ligne mettons.
 
21.11.2010  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

14.322 Views

Untitledvor 0 min.
Gast.0815 vor 7 Tagen
Walter11.12.2022
Georg Teles26.01.2019
H.Brill06.08.2018
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie