Deutsch
Forum

Klick auf Headerbuttons wird nicht zuverlässig abgefangen

 

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...
 
10.03.2007  
 



Wofür steht $1401? Ist das ein Listview.Dll internal?
 
10.03.2007  
 




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)
 
10.03.2007  
 



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.
 
10.03.2007  
 




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.
 
10.03.2007  
 




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

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




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.
 
10.03.2007  
 



@Hi Frank


Das jedenfalls ist meine Meinung.


...meine auch !
 
11.03.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.066 Betrachtungen

Unbenanntvor 0 min.
Jörg Sellmeyer11.06.2020
Ernst28.07.2016
H.Brill15.06.2014
Unbenannt06.06.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie