Jetzt hab ich schon mal eine Lösung gefunden für Visual Bsaic, aber gibts etwas vergleichbares zu "EnsureVisible" in Delphi?
Delphi-Quellcode:
Private Sub Form_Load()
Dim x As Integer
With ListView1
For x = 1 To 20
.ListItems.Add Key:="foo" & x, Text:="foo" & x
Next x
.SelectedItem = .ListItems("foo20")
.SelectedItem.EnsureVisible
End With
End Sub
Quelle:
http://msdn.microsoft.com/library/de...l/listview.asp
[edit]
ich bin schon mal wieder etwas weiter gekommen:
Delphi-Quellcode:
var
pos : Integer;
DisplayRec: TRect;
begin
uhrzeit := Copy(uhrzeit,1,4)+'0';
lv := lvbox[PC1.ActivePageIndex+1]; // Auswahl des akt. ListViews
for i := 0 to lv.Items.Count -1 do
if lv.Items[i].SubItems[1] = uhrzeit then
begin
lv.SetFocus;
DisplayRec := lv.Items[0].DisplayRect(drBounds);
pos := (DisplayRec.Bottom - DisplayRec.Top) * i;
lv.Scroll(0,pos);
break;
end;
end;
Ist zwar noch nicht ganz ausgereift, zumindest für meine Zwecke, aber grundsätzlich funktioniert es schon mal
.
[edit2]
und ich hab noch eine Lösung gefunden, und zwar "MakeVisible" ist aber leider für meine Zwecke nicht ganz das wahre ...
[edit3]
Hab mich jetzt für die "DisplayRect"-Lösung entschieden und verschieb "pos" noch um 1/3 der ListView-Höhe nach unten, dann paßt das ganz gut.