|
Weiß worum´s geht
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 227
|
Listview scrollt
In einem Fenster habe ein Listview und zwei Checkboxen.
Ist im Listview noch keine Zeile markiert, können beide Checkboxen de- und aktiviert werden, ohne dass das Listview scrollt. Wurde eine Zeile markiert, scrollt das Listview nur beim De- und Aktivieren der Checkbox für "Bild anzeigen", und das möchte ich eigentlich nicht.
Ich finde keine Lösung. Einer von Euch?
(XP SP2, XProfan 11)
Gruß Thomas
Code:
Def Enablemenuitem(3) !"USER32","EnableMenuItem"
Def GetSystemMenu(2) !"USER32","GetSystemMenu"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Franks ListView
Declare lvdll&
lvdll&=usedll("Listview.dll")
$I Listview_Funktionen.inc
cls
Declare BP_b0&,Bereich#,x&,y&
Declare Boot_dlg&,listview&
Boot_dlg& = @Create("Window",%hwnd,"Bootsplatz Belegung ",0,0,0,0)'010,430,496,296)
ShowWindow(Boot_dlg&,0)
EnableMenuitem(GetSystemMenu(Boot_dlg&,0),$F060,1) 'schließen Kreuz deaktiviert
listview&=CreateListView(Boot_dlg&,%hinstance,0,$FFFFFF,-1,$31)
InsertColumn listview&,"<->",60,0
InsertColumn listview&,"^| ",60,0
InsertColumn listview&,"Lage",40,0
InsertColumn listview&,"Nummer",50,0
InsertColumn listview&,"Name",120,0
InsertColumn listview&,"Font",80,0
InsertColumn listview&,"Höhe",40,0
InsertColumn listview&,"Fett",40,0
Whileloop 20
SetItem listview&,str$(&Loop),"2","W",str$(&Loop),"Klaus","Arial","10","0"
wend
AutoSortListview listview&,1,1,1,1,1,1,1,1
ShowListView(listview&,20,2,450,220)
EnableEdits(listview&,0)
EnableDragDrop(listview&,1+4)
CreateText(Boot_dlg&,"Curser springt zum Ziel",52,232,160,23)
var cur4_T& = CreateCheckBox(Boot_dlg&,"",24,230,20,20)
CreateText(Boot_dlg&,"Bild anzeigen",286,232,100,23)
var cur6_T& = CreateCheckBox(Boot_dlg&,"",264,230,20,20)
InitMessages(Boot_dlg&)
BP_b0& = @Control("Button","Änderung EIN / AUS",$50001043,298,26,240,30,%hwnd,1005,%Hinstance)' Bearbeiten
SetCheck BP_b0&,0
while 1
WaitInput
case %key=2:BREAK
case Clicked(BP_b0&) : B_Platz_Menu
wend
FreeDLL lvdll&
end
Proc B_Platz_Menu
Declare Mklick&
SetCheck BP_b0&,1
ShowWindow(Boot_dlg&,1)
SetWindowPos Boot_dlg&=010,280-496,296;0
While GetCheck(BP_b0&)=1
WaitInput
case GetCheck(BP_b0&)=0 : BREAK
Dim bereich#,320
MKlick& = GetControlParas(Bereich#)'Feldparameter auslesen
' Get_LvData 'Parameter auslesen
' IF LV_Handle&=listview&
If Mklick& = 1 'Doppelklick links
' case (LV_Handle&=listview&): Edit_BP2
ElseIf (Mklick& = 3) AND (GetCheck(cur4_T&))
' GetItemText(listview&,bereich#,0,LV_Row&)
' x%= Val(String$(bereich#,0)) + 10
' GetItemText(listview&,bereich#,1,LV_Row&)
' y%= Val(String$(bereich#,0)) + 80
' APISetCursorPos(x%,y%) 'Den Cursor ins Fenster setzen
ElseIf (Mklick& = 3) AND (GetCheck(cur6_T&))
' destroywindow( b.Dia&)
' GetItemText(listview&,bereich#,3,LV_Row&)
' text$ = String$(bereich#,0)
' GetItemText(listview&,bereich#,4,LV_Row&)
' text1$ = String$(bereich#,0)
' Boot_DIALOG text$, text1$
EndIf
' endif
dispose bereich#
wend
SetCheck BP_b0&,0
SetWindowPos Boot_dlg&=0,0-0,0;1
ShowWindow(Boot_dlg&,0)
EndProc
|