![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Für alle, die ihren Listboxen das Sortieren per Hand ermöglichen wollen (Drag&Drop innerhalb der Listbox), hier der passende Code.
![]() Code:
$H Windows.ph
$H Messages.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 POINT = X&,Y&
Struct DRAGLISTINFO = uNotification&,hWnd&,ptCursor!POINT
Var FirstItem& = 0
Var LastItem& = 0
Var MoveString$ = ""
Var MoveCursor& = ~LoadCursor(~GetModuleHandle("shell32.dll"),1003)
'Genau diese spezielle Meldung muss registiert werden
'damit das Fenster die Drag&Drop Operationen verarbeiten kann.
Var DragMSG& = ~RegisterWindowMessage($DRAGLISTMSGSTRING)
CLS
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
Var Ende& = 0
Var Draglist& = Create("Listbox",%hwnd,0,10,10,300,300)
'Die Listbox für Drag&Drop vobereiten
External("comctl32.dll","MakeDragList",Draglist&)
Addstring(Draglist&,"Eintrag")
Addstring(Draglist&,"Auftrag")
Addstring(Draglist&,"Anton")
Addstring(Draglist&,"Otto")
Addstring(Draglist&,"Werner")
Addstring(Draglist&,"Karl")
SubClass %HWnd,1
WhileNot Ende&
Waitinput
EndWhile
SubClassProc
If SubClassMessage(%hWnd,DragMSG&)
Var Info# = New(DRAGLISTINFO)
Info# = &slParam
If Info#.uNotification& = &DL_BEGINDRAG
'Drag&Drop beginnt
'Item merken
FirstItem& = External("comctl32.dll","LBItemFromPt",Draglist&,Info#.ptCursor!X&,Info#.ptCursor!Y&,1)
'Marker zeichnen, muss nicht sein, erhöht aber die Sichtbarkeit
External("comctl32.dll","DrawInsert",%hwnd,Draglist&,Firstitem&)
'Item-Text merken
MoveString$ = GetString$(Draglist&,FirstItem&)
Set("WinProc", 0)
'Cursor benutzen
~SetCursor(MoveCursor&)
Return &DL_COPYCURSOR
ElseIf Info#.uNotification& = &DL_DRAGGING
'Drag&Drop ist im Gange
'Item merken
LastItem& = External("comctl32.dll","LBItemFromPt",Draglist&,Info#.ptCursor!X&,Info#.ptCursor!Y&,1)
'Marker neuzeichnen
External("comctl32.dll","DrawInsert",%hwnd,Draglist&,LastItem&)
Set("WinProc", 0)
'Item markieren, muss nich sein, erhöht aber die Sichtbarkeit
SendMessage(DragList&,~LB_SETCURSEL,LastItem&,0)
'Cursor benutzen
~SetCursor(MoveCursor&)
ElseIf Info#.uNotification& = &DL_DROPPED
'Drag&Drop ist beendet
'Item merken
LastItem& = External("comctl32.dll","LBItemFromPt",Draglist&,Info#.ptCursor!X&,Info#.ptCursor!Y&,1)
If Lastitem& <> -1
'Marker entfernen
External("comctl32.dll","DrawInsert",%hwnd,Draglist&,-1)
'das erste gemerkte Item löschen
DeleteString(DragList&,FirstItem&)
'und an der Position des letzten gemerkten Items einfügen
InsertString(DragList&,LastItem&,MoveString$)
'Item demarkieren
SendMessage(DragList&,~LB_SETCURSEL,-1,0)
Set("WinProc", 0)
EndIf
EndIf
EndIf
EndProc
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
|
#2 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
Ganz schön raffiniert
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Frank hatte auch mal eine DLL dazu geschrieben, die das Gleiche macht, nur dass sich der Programmierer nicht mehr drum kümmern muss.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#4 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
@Jac
Schon richtig, aber auch du müsstest doch wissen, daß mir jeder XProfan-Code lieber ist wie eine DLL. (große Ausnahme: LISTVIEW.DLL, ebenfalls von Frank)
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Ja, die Dll nutzte ebenfalls diesen Listbox-Modus. Ich meine auch, ich hätte das mal in XProfancode umgesetzt und in ein Forum reingesetzt.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
@Horst: Ich weiß, aber ich wollts trotzdem einwerfen. Ich wollte Andreas' Code auch nicht schlechtmachen.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| "HotFixInstallerUI.dll" und "eula.rtf" nach Update / Jetzt externe Festplatte defekt | Maliana | Viren-Forum | 3 | 01.12.2009 16:57 |
| Schadcode wird mehr und mehr "von Hand" verbreitet | Info | Sicherheitsmeldungen von heise.de | 0 | 15.04.2009 15:50 |
| Einträge im Ordner "Programme" sortieren | Paule | a.) Windows 98/ME | 0 | 29.10.2008 12:39 |
| Einträge im Ordner "Programme" sortieren | Paule | b.) Windows XP | 0 | 27.10.2008 22:42 |
| Re: "dead man's hand" startet nicht, Bitte um Hilf | nenkaj | Computerspiele | 0 | 31.05.2004 10:07 |