Klick auf Headerbuttons wird nicht zuverlässig abgefangen



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] [/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].

Valid CSS!

©2006 XProfan.Com