Français
Forum

Mauszeiger im Listview Controlparas

 
- page 1 -



Andreas
Koch
allô zusammen,

je stehe encore einmal avant einem Problem. und dir tout autor, angezeigt trop bekommen, sur welchem Listviewitem (Spalte, la ligne) sich qui Mauszeiger justement est. mon idée ist, im Anschluss à une simulierten Mausklick Getcontrolparas abzufragen et cela Ganze dans un Boucle einzubauen. Hat quelqu'un une concept, comment on cela faire pourrait ou bien hat es sogar gemacht? j'ai versucht avec mouse_event trop travailler, mais cela funktioniert pas.

Schönen Salut

Andreas Koch
 
22.05.2013  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »


Thomas
Freier
cela hatten wir doch, je crois beim Stundenplan.
ici un min. Beispiel pour Tooltip:
 $H Windows.ph
 $H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,LView&,l%
Faible LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Paramètres  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Retour LVHTI#.SubItem&

ENDPROC

Cls
LView& = Créer("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Bemerkung;0;100",0,20,10,410,200)

WhileLoop 0,4

    AddStrings(LView&,"0 Test " + Str$(&Boucle) + "|1 Test " + Str$(&Boucle) + "|2 Test " + Str$(&Boucle) + "|")

Wend

var text$="Was ist car überhaupt un Listview? \nOb vous's croyons ou bien pas. "+  \
"Sobald vous ihren Windows-PC anschalten, erscheint déjà cela erste Listview."+ \
"Wo, fragen vous? sur ihrem Bildschirm.\nDer Windows Bildschirm ist nämlich rien d'autre comme un Listview.\n"+ \
"(FRABBING)"
SetText LView&, 1, 3, text$
sendmessage(Lview&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVM_SUBITEMHITTEST)'markiert qui la ligne sous qui souris
'sendmessage(LView&,0,~LVM_SETHOVERTIME,10) 'löst pratique un Mausklick aus ????
var ToolTip&=create("Tooltip",%hwnd,LView&,»)
var medit%=Créer("MultiEdit",%hwnd,»,0,0,300,-400)
ShowWindow(medit%,0)

Tandis que 1

    WaitInput 100
    l% =  LV_HitTest(LView&,%mousex,%mousey)
    '

    SELECT LVHTI#.Item&

        CASEOF 1'ZEILE

        Si LVHTI#.SubItem&=3'ITEM

            SetText medit%,GetText $(LView&,LVHTI#.Item&,LVHTI#.SubItem&)
            text$=»

            Whileloop GetLineCount(medit%)'Anzahl Zeilen

                text$=text$+GetLine$(medit%,&loop-1)+"\n"'einzelne Zeilen auslesen et Zeilenumbruch

            Wend

            settext ToolTip&,%hwnd,LView&,text$

        EndIf

        CASEOF 3'ZEILE

        settext ToolTip&,%hwnd,LView&,"erste Wahl"
        OTHERWISE
        settext ToolTip&,%hwnd,LView&,»

    ENDSELECT

Wend

end

Müßte sûrement sur SubClassProc umgestellt volonté.
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.05.2013  
 



savons tue je es pas, mais qui Breiten qui Spalten peux on imho avec
LVM_GETCOLUMNWIDTH ermitteln, per minus Mausposition-X pourrait on so qui
Spalte herausbekommen.

il y a mais aussi LVM_GETITEMINDEXRECT (  [...]  ) quoi peut-être encore hilfreicher ist.
LVM_FIRST = $1000
LVM_GETCOLUMNWIDTH = ~LVM_FIRST + 29
LVM_SETCOLUMNWIDTH = ~LVM_FIRST + 30

Proc GetColWidth

    Paramètres hGBox&, ColNr%
    Déclarer ColWidth%
    ColWidth% = SendMessage( hGBox&, ~LVM_GetColumnWidth, ColNr%, 0)
    Retour ColWidth%

ENDPROC


Mausklick vlt. simple so:
Def mouse_event(5) !"User32","mouse_event"
mouse_event(2,0,0,0,0)'linke maustaste runter
mouse_event(4,0,0,0,0)'linke maustaste wieder hoch
 
22.05.2013  
 




Thomas
Freier
cela hatten wir doch, je crois beim Stundenplan.
ici un min. Beispiel pour Tooltip:
 $H Windows.ph
 $H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,LView&,l%
Faible LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Paramètres  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Retour LVHTI#.SubItem&

ENDPROC

Cls
LView& = Créer("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Bemerkung;0;100",0,20,10,410,200)

WhileLoop 0,4

    AddStrings(LView&,"0 Test " + Str$(&Boucle) + "|1 Test " + Str$(&Boucle) + "|2 Test " + Str$(&Boucle) + "|")

Wend

var text$="Was ist car überhaupt un Listview? \nOb vous's croyons ou bien pas. "+  \
"Sobald vous ihren Windows-PC anschalten, erscheint déjà cela erste Listview."+ \
"Wo, fragen vous? sur ihrem Bildschirm.\nDer Windows Bildschirm ist nämlich rien d'autre comme un Listview.\n"+ \
"(FRABBING)"
SetText LView&, 1, 3, text$
sendmessage(Lview&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVM_SUBITEMHITTEST)'markiert qui la ligne sous qui souris
'sendmessage(LView&,0,~LVM_SETHOVERTIME,10) 'löst pratique un Mausklick aus ????
var ToolTip&=create("Tooltip",%hwnd,LView&,»)
var medit%=Créer("MultiEdit",%hwnd,»,0,0,300,-400)
ShowWindow(medit%,0)

Tandis que 1

    WaitInput 100
    l% =  LV_HitTest(LView&,%mousex,%mousey)
    '

    SELECT LVHTI#.Item&

        CASEOF 1'ZEILE

        Si LVHTI#.SubItem&=3'ITEM

            SetText medit%,GetText $(LView&,LVHTI#.Item&,LVHTI#.SubItem&)
            text$=»

            Whileloop GetLineCount(medit%)'Anzahl Zeilen

                text$=text$+GetLine$(medit%,&loop-1)+"\n"'einzelne Zeilen auslesen et Zeilenumbruch

            Wend

            settext ToolTip&,%hwnd,LView&,text$

        EndIf

        CASEOF 3'ZEILE

        settext ToolTip&,%hwnd,LView&,"erste Wahl"
        OTHERWISE
        settext ToolTip&,%hwnd,LView&,»

    ENDSELECT

Wend

end

Müßte sûrement sur SubClassProc umgestellt volonté.
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.05.2013  
 




Andreas
Koch
allô son beiden,

entier herzlichen Dank pour eure répondre. je wurschtel déjà den ganzen journée rum, mais maintenant klappts.
Kurzes Feedback: Um Getcontrolparas nutzen trop peut, muss on cela Drücken et cela Loslassen simulieren , était malheureusement pour meinen original Zweck pas entier approprié, funktioniert mais doch avec mouse_event.
cette Tooltip pour Listview était schlicht genial, oui c'est ca cela quoi je gesucht habe. merci.

PS: je hatte ici la fois gefragt, si on qui Listviewposition (Spalte, la ligne) des Editcontrols avec dem Handle Getvar(0) ermitteln peux. cela funktioniert aussi avec qui Methode: on bestimmt avec Getwindowrect Position et arpentage des Edits et verwendet anschließend den Hittest avec dem Mittelwerten aus getwindowrect. si cela Ganze dans einer Boucle avec qui Abbruchbedingung Tandis que Getvar(0) gemacht wird, bekommt on ständig qui aktuelle Position.
 
22.05.2013  
 



 
22.05.2013  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

9.235 Views

Untitledvor 0 min.
Member 154727723.09.2018
Erfurt28.12.2016
Michael W.07.07.2016
Georg Teles29.06.2016
plus...

Themeninformationen

cet Thema hat 3 participant:

Andreas Koch (2x)
iF (2x)
Thomas Freier (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie