| |
|
|
Jörg Sellmeyer | Hallo Frank, In Deinem Beispiel Alle_Maustasten_abfangen.prf benutzt Du SetTimer 10 um die Listviewvariablen zu füllen. Ist das die einzige Möglichkeit die Mausklicks auf die Spaltenbuttons sicher zu erwischen? Ohne geht es nämlich nicht Ich hab selber auch viel rumprobiert aber meistens wird der zweite gleiche Klick auf einen Spaltenbutton im gleichen Control nicht mehr registriert. Wenn zwischendurch in das Listview geklickt wird gehts wieder. Ich hoffe, ich konnte mich einigermaßen verständlich machen Ach ja - es geht um die linke Maustaste!
Der Einfachheit halber gleich mal Code dazu. Gruß Jörg KompilierenMarkierenSeparieren $I Listview_Funktionen.inc
Declare LVDllHdl&
Declare bereich#,status&
Declare text$,x&,y&
Dim bereich#,320
LVDllHdl&=UseDll(Listview.dll)
Declare ListView1&
Proc SetListView1
InitMessages(%hwnd)
Declare tmptxt$
tmptxt$=Spalte 1;Spalte 2;Spalte 3
IColumn(ListView1&,Addr(tmptxt$),60,0)
tmptxt$=Spalte 2
IColumn(ListView1&,Addr(tmptxt$),60,0)
tmptxt$=Spalte 3
IColumn(ListView1&,Addr(tmptxt$),60,0)
WhileLoop 0,6
AddString(ListView1&,MkStr$(Test + Format$(00,&Loop) + |,3))
Wend
ShowListView(ListView1&,1,1,Width(%hwnd) - 2,Height(%hwnd) - 200)
EndProc
Proc ExitLV
CloseMessages(%hwnd)
FreeDll LVDllHdl&
EndProc
UserMessages 16
WindowStyle $218
Window 100,100 - 620,520
ListView1&=CreateListView(%hwnd,%hinstance,0,14417146,-1,$21)
SetListView1
status&=Create(TEXT,%HWND,text$,8,364,600,72)
While 1
WaitInput
Case %umessage = 16:Break
y&=GetControlParas(bereich#)
If y&=2
text$=Der rechte Mausknopf wurde in Spalte +Str$(Long(bereich#,4))+ / +Str$(Long(bereich#,8))+ gedrückt.
ElseIf y&=1
text$=Der linke Mausknopf wurde in Spalte +Str$(Long(bereich#,4))+ / +Str$(Long(bereich#,8))+ als Doppelklick gedrückt.
ElseIf y&=3
text$=Der linke Mausknopf wurde in Spalte +Str$(Long(bereich#,4))+ / +Str$(Long(bereich#,8))+ gedrückt.
EndIf
If y&<>0
text$=text$+Dieses ereignete sich im Listview mit dem Handle +Str$(Long(bereich#,0))+.
SetText status&,text$
Endif
x&=GetVar(2)
If x&<>-1
y&=GetVar(3)
text$=Der rechte Mausknopf wurde über dem Spaltenbutton in Spalte +Str$(x&)+ gedrückt.
text$=text$+Dieses ereignete sich im Listview mit dem Handle +Str$(y&)+.
SetText status&,text$
EndIf
x&=GetVar(4)
If x&<>-1
y&=GetVar(5)
text$=Der linke Mausknopf wurde über dem Spaltenbutton in Spalte +Str$(x&)+ gedrückt.
text$=text$+Dieses ereignete sich im Listview mit dem Handle +Str$(y&)+.
SetText status&,text$
EndIf
Wend
ExitLV
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.03.2007 ▲ |
|
|
|
|
Frank Abbing | Du meinst, dass Profans WaitInput ohne Timer nicht durchbrochen wird bei einem Linksklick auf einen Headerbutton...
Dann probier einfach mal ein: Usermessages $1401 Und schon wird Waitinput bei einem Linksklick des Headers durchbrochen. Nachzulesen in der Anleitung (ganz rechts oben).
Damit ersparst du sogar GetControlParas(), jedenfalls, wenn dich nur Linksklicke interessieren. Ich versuche immer, mehrere Möglichkeiten einzubauen... |
|
|
| |
|
|
|
| Wofür steht $1401? Ist das ein Listview.Dll internal? |
|
|
| |
|
|
|
Frank Abbing | Also gut... Auszug aus der Listview.dll-Hilfe:
Listview.dll und Usermessages:
Seit Version 1.9 verschickt die Listview.dll verschiedene Usermessages an das Hauptprogramm, wenn bestimmte Ereignisse passieren. An dieser Stelle werden diese Messages genannt und erklärt:
$1400: Ermittelt jeden Tastendruck in einem beliebigen Listview. uwParam = Listview-Handle ulParam = Tastencode
$1401: Linke Maustaste wurde auf einem Spaltenbutton gedrückt. uwParam = Listview-Handle ulParam = Spaltenindex (nullbasierend)
$1402: Anwender will gerade Spaltenbreite verändern. uwParam = Listview-Handle ulParam = Spaltenindex (nullbasierend)
$1403: Anwender hat Spaltenbreite verändert. uwParam = Listview-Handle ulParam = Spaltenindex (nullbasierend) |
|
|
| |
|
|
|
| Ah, die UserMessages habe ich noch gar nicht registriert. Hab tatsächlich seit Version 1.8 nicht mehr mit der dll programmiert. Heute habe ich erstmal die ganzen alten Leichen aus dem System geschmissen. Danke, das hilft kollossal. Vielleicht solltest Du für die anderen Klicks auch UserMessages nutzen. Diese unterschiedlichen Abfragen für die Klicks (GetControlParas/GetVar) führen schon mal zur Verwirrung. |
|
|
| |
|
|
|
Jörg Sellmeyer | Verdammt! Jetzt passiert sowas!! Da wird man beim Schreiben rausgeschmissen - nur weil ich kurz was nachgesehen habe.
Ah, die UserMessages habe ich noch gar nicht registriert. Hab tatsächlich seit Version 1.8 nicht mehr mit der dll programmiert. Heute habe ich erstmal die ganzen alten Leichen aus dem System geschmissen. Danke, das hilft kollossal. Vielleicht solltest Du für die anderen Klicks auch UserMessages nutzen. Diese unterschiedlichen Abfragen für die Klicks (GetControlParas/GetVar) führen schon mal zur Verwirrung. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.03.2007 ▲ |
|
|
|
|
Frank Abbing |
Diese unterschiedlichen Abfragen für die Klicks (GetControlParas/GetVar) führen schon mal zur Verwirrung.
Ich halte es für sinnvoll, mehrere Arten für eine Lösung zur Verfügung gestellt zu bekommen. Jede Technik hat eben seine Vor- und Nachteile. Es ist auch passiert, dass ich hinterher eine besser Methode gefunden habe, ein Problem zu lösen. Deswegen lasse ich aber die alte Möglichkeit bestehen, schon aus Kompatibilitätsgründen. |
|
|
| |
|
|
|
Jörg Sellmeyer | Das ist schon klar aber jetzt hast Du für die normalen Klicks im Listview GetControlParas und für Headerklicks GetVar und (nur für links) UserMessages. Wenn Du die UserMessages auch noch für die anderen Klicks einbaust ist die Abfrage einfacher. Also z. B.: $1401 = Header Link $1402 = Header Rechts $1403 = normaler Linksklick $1404 = normaler Rechtsklick $1405= Doppelklick
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.03.2007 ▲ |
|
|
|
|
Frank Abbing | Ich habe ja nichts degegen. Das nächte Update kommt bestimmt . |
|
|
| |
|
|
|
Jörg Sellmeyer | Frank Abbing
Ich habe ja nichts degegen. Das nächte Update kommt bestimmt .
Das wollte ich hören! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.03.2007 ▲ |
|
|
|
|
Frank Abbing |
Du hast Deinen Gewinn ausprobiert, stimmts? Ich hörs mir gerade an - ist echt zum piepen!
Halt! Die Sprachausgabe entstammt nicht meinem Gewinn. Damit erzeugte Sprache hört sich nämlich fürchterlich an (nur SAPI) und das Tool ist längst wieder deinstalliert. Hab mir Voice Reader von linguatec bestellt, das hört sich um Längen besser an... Das jedenfalls ist meine Meinung. |
|
|
| |
|
|
|
| @Hi Frank
Das jedenfalls ist meine Meinung.
...meine auch ! |
|
|
| |
|
|