Ist es möglich, eventuell mit einer Message, ohne die ListView.dll von Frank rauszukriegen ob ein Header-Item angeklickt wurde (und wenn ja, welches)?
Click auf Header in ListView
-
-
-
-
...aber das funktioniert alles nicht mit XProfan.
-
Vielleicht kommst du damit weiter:
Code
Alles anzeigen$H Windows.ph $H commctrl.ph Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem& Declare LVHTI#,LView&,Header& Dim LVHTI#,LVHitTestInfo Proc LV_HitTest Parameters LV&,X%,Y% ~GetCursorPos(LVHTI#) ~ScreenToClient(LV&,LVHTI#) SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#) EndProc Cls LView& = Create("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Test 3;0;100",0,200,10,410,200) WhileLoop 0,4 AddString(LView&,"0 Test " + Str$(&Loop) + "|1 Test " + Str$(&Loop) + "|2 Test " + Str$(&Loop) + "|3 Test " + Str$(&Loop)) Wend Header&=sendmessage(Lview&,~LVM_GETHEADER,0,0)' setstyle Header&,$50000002'--Header aktivieren While 1 WaitInput If getfocus(LView&) LV_HitTest LView&,%mousex,%mousey Locate 0,0 If (&wParam=0) messagebox("Header \n"+str$(int(LVHTI#.SubItem&+1))+". Spalte \ngewählt.. ","",32) Else Print GetText$(LView&,LVHTI#.Item&,LVHTI#.SubItem&) EndIf EndIf Wend
-
THFR: Vielen Dank schon mal, ich komme eventuell erst morgen dazu es zu probieren. Wenn das gut funktioniert, darf ich es mit in meine ListView.inc aufnehmen? Natürlich mit Hinweis auf deine Urheberschaft.
-
Das kannst du sicher. Die Abfrage ist bestimmt von den alten LV-Recken oder aus der plv.inc, wo ja eine Spaltensortierung eingebaut war.
Jac, du müsstest mal die Verlinkung: jacdelad.bplaced.net anpassen. LINK: jacdelad.bplaced.de, und das führt zu einer Fehlermeldung.
Gruß Thomas
-
Ups, 'tschuldigung. Mache ich sofort.
Vielen, vielen Dank, der Code klappt übrigens wunderbar. Ist es auch möglich zwischen Einfach- und Doppelklick zu unterscheiden?
Ich nehme beim nächsten Update in die ListView.inc auf (in leicht angepasster Form). -
Für Item-Doppellinksklick hätte ich:
Code
Alles anzeigen$H windows.ph $H messages.ph ...... SubClassProc If SubClassMessage(%hWnd, ~WM_NOTIFY) If Long(&sLParam,8)=-3 item&=Long(&sLParam,12) If item&<>-1 SendMessage(%hwnd, 2000, item&, Long(&sLParam,16)) EndIf EndIf EndIf EndProc SubClass %hwnd, 1 UserMessages 2000 ...... If (%umessage = 2000) ......... Endif .....
Einfach mal probieren.
-
Hm, das kenne ich schon. Ich meinte Spalten. Trotzdem danke natürlich.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!