| |
|
|
| Thomas Freier (22.05.13)
Das hatten wir doch, ich glaube beim Stundenplan. Hier ein min. Beispiel per Tooltip: $H Windows.ph
$H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Declare LVHTI#,LView&,l%
Dim LVHTI#,LVHitTestInfo
Proc LV_HitTest
Parameters LV&,X%,Y%
~GetCursorPos(LVHTI#)
~ScreenToClient(LV&,LVHTI#)
SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
Return LVHTI#.SubItem&
EndProc
Cls
LView& = Create("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
AddString(LView&,"0 Test " + Str$(&Loop) + "|1 Test " + Str$(&Loop) + "|2 Test " + Str$(&Loop) + "|")
Wend
var text$="Was ist denn überhaupt ein Listview? \nOb sie's glauben oder nicht. "+ \
"Sobald sie ihren Windows-PC anschalten, erscheint schon das erste Listview."+ \
"Wo, fragen sie? Auf ihrem Bildschirm.\nDer Windows Bildschirm ist nämlich nichts anderes als ein Listview.\n"+ \
"(FRABBING)"
SetText LView&, 1, 3, text$
sendmessage(Lview&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVM_SUBITEMHITTEST)'markiert die Zeile unter der Maus
'sendmessage(LView&,0,~LVM_SETHOVERTIME,10) 'löst praktisch ein Mausklick aus ????
var ToolTip&=create("Tooltip",%hwnd,LView&,"")
var medit%=Create("MultiEdit",%hwnd,"",0,0,300,-400)
ShowWindow(medit%,0)
While 1
WaitInput 100
l% = LV_HitTest(LView&,%mousex,%mousey)
'
SELECT LVHTI#.Item&
CASEOF 1'ZEILE
If 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 und 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 sicher auf SubClassProc umgestellt werden. |
|
|
| |
|
|