| |
|
|
- Seite 1 - |
|
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 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
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 ! |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Frank Abbing |
$1403 = normaler Linksklick $1404 = normaler Rechtsklick $1405= Doppelklick
Problem: Drei Infos werden hier benötigt: listviewhandle, spaltenindex, zeilenindex. Per Message kann ich aber nur zwei versenden (lparam und wparam)... |
|
|
| |
|
|
|
Jörg Sellmeyer | Den Zeilenindex kann man dann ja wieder mit normalen Profanmitteln oder Listview.dll-Mitteln abfragen. KompilierenMarkierenSeparieren und für die Headerklicks das Gleiche mit anderen Messages. Dann könnte man alle auftretenden Klicks mit einer einheitlichen Methode erwischen und braucht nicht mit verschiedenen zu jonglieren.
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.03.2007 ▲ |
|
|
|
|
Frank Abbing | Hab es so gelöst, dass Spalte und Zeile übergeben wird. Mittels GetVar(7) kann der Listview-Handle ermittelt werden, falls erforderlich. |
|
|
| |
|
|
|
Jörg Sellmeyer | Poste doch mal ein Beispiel. Ich fände es besser, wenn das Handle übergeben wird. Dann kann man eine GetFocus ähnliche Funktion definieren, um die Events abfragen. KompilierenMarkierenSeparieren So kann man bei mehreren Listviews eleganter abfragen (finde ich zumindest) KompilierenMarkierenSeparieren Wie würdest Du es bei Deiner Methode lösen?
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.03.2007 ▲ |
|
|
|
|
Frank Abbing | |
|
| |
|
|
|
Jörg Sellmeyer | Ok, mit dem zusätzlichen Flag bei GetVar() geht es auch so. Ich würds dann so machen: KompilierenMarkierenSeparieren Mit meiner oben beschriebenen Methode benötigt man aber das Flag 7 gar nicht. Dafür braucht man mit Deiner Methode GetControlParas nicht mehr unbedingt... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.03.2007 ▲ |
|
|
|
|
Frank Abbing |
Dafür braucht man mit Deiner Methode GetControlParas nicht mehr unbedingt...
Gar nicht, würd ich sagen... Wie mans dreht und wendet ist ja egal. |
|
|
| |
|
|