Forum | | | | - 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 |
| | | | |
| | « 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é. |
| | | | | |
| | | 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.
Mausklick vlt. simple so:
|
| | | | |
| | 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é. |
| | | | |
| | 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. |
| | | | |
| | | | | | | |
|
répondreOptions du sujet | 9.207 Views |
Themeninformationencet Thema hat 3 participant: |