Jörg Sellmeyer, 10.03.2007 23:13: 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











































































[/offtopic]Frank Abbing, 10.03.2007 23:20: Ich habe ja nichts degegen. Das nächte Update kommt bestimmt
.
Jörg Sellmeyer, 10.03.2007 23:23: Zitat von ""Frank Abbing"": Ich habe ja nichts degegen. Das nächte Update kommt bestimmt
.
Das wollte ich hören!
Frank Abbing, 10.03.2007 23:24: Zitat: Du hast Deinen Gewinn ausprobiert, stimmt's? Ich hör's 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.
Horst Horn, 11.03.2007 07:55: @Hi Frank
Zitat: Das jedenfalls ist meine Meinung.
...meine auch ! 
Frank Abbing, 11.03.2007 13:19: Zitat: $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, 11.03.2007 13:32: Den Zeilenindex kann man dann ja wieder mit normalen Profanmitteln oder Listview.dll-Mitteln abfragen.
If %umessage = $1403
Zeile& = GetCurSel(&uwparam)
'oder
GetControlParas(...)
Zeile& = Long(b#,8)
ElseIf %umessage = $1404
...
ElseIf %umessage = $1405
...
EndIf
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.
Gruss
Jörg
Frank Abbing, 11.03.2007 15:47: 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, 11.03.2007 20:57: 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.
Proc LVLeftClick
Parameters LV&
Return (%umessage = $1403) And &uwparam = LV&)
EndProc
Proc LVLeftDblClick
Parameters LV&
Return (%umessage = $1404) And &uwparam = LV&)
EndProc
So kann man bei mehreren Listviews eleganter abfragen (finde ich zumindest)
If LVLeftClick(LV1&)
AktionLV1
ElseIf LVLeftDblClick(LV1&)
AktionDblClkLV1
ElseIf LVLeftClick(LV2&)
AktionLV2
ElseIf LVLeftDblClick(LV2&)
AktionDblClkLV1
ElseIf ...
...
EndIf
Wie würdest Du es bei Deiner Methode lösen?
Gruss
Jörg
Frank Abbing, 11.03.2007 21:43:
aklick&=0
If %umessage>=1405 or %umessage<=1408
sp&=&uwparam
zl&=&ulparam
lv&=GetVar(7)
aklick&=%umessage
EndIf
If aklick&
text$="Linksklick"
Case aklick&=$1406:text$="Rechtsklick"
Case aklick&=$1407:text$="Doppellinksklick"
Case aklick&=$1408:text$="Doppelrechtsklick"
Print text$+" Listview: ",Str$(lv&)+" ("+Str$(sp&)+", "+Str$(zl&)+")"
EndIf
Jörg Sellmeyer, 11.03.2007 22:57: Ok, mit dem zusätzlichen Flag bei GetVar() geht es auch so.
Ich würd's dann so machen:
Proc LVLeftClick
Parameters LV&
Return (%umessage = $1405) And (GetVar(7) = LV&)
EndProc
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...
Frank Abbing, 12.03.2007 07:44: Zitat: Dafür braucht man mit Deiner Methode GetControlParas nicht mehr unbedingt...
Gar nicht, würd' ich sagen...
Wie man's dreht und wendet ist ja egal.
Dies ist die Offlinevariante vom Thread [Klick auf Headerbuttons wird nicht zuverlässig abgefangen].
©2006 XProfan.Com