Einzelnen Beitrag anzeigen

Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#1

TListView-OnMouseMove->richtige ListItem ermitteln?

  Alt 1. Dez 2005, 20:09
Meine TListView wrid so erzeugt:
Delphi-Quellcode:
var
  HostListView: TListView;
[...]
  HostListView := TListView.Create(Self);
  with HostListView do
  begin
    Name := 'HostListView';
    Parent := VariablesSheet;
    Left := 0;
    Top := 0;
    Width := 441;
    Height := 211;
    Align := alClient;
    Columns := <>;
    GridLines := True;
    ReadOnly := True;
    RowSelect := True;
    ShowWorkAreas := True;
    TabOrder := 0;
    ViewStyle := vsReport;
    OnMouseMove := HostListViewMouseMove;
  end;
[...]
procedure TMainAppForm.HostListViewMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  ListItem:TListItem;
  CurrentListView:TListView;
  i, w:Integer;
begin
  CurrentListView := TListView(Sender);
  ListItem := CurrentListView.GetItemAt(x, y);
  if ListItem<>nil then
  begin
    w := 0;
    for i:=0 to CurrentListView.Columns.Count-1 do
    begin
      w := w + CurrentListView.Columns.Items[i].Width;
      if w>X then
      begin
        if i=0 then
        begin

            CurrentListView.Hint := '|'+CurrentListView.Columns.Items[i].Caption+' = '+ListItem.Caption;

        end else
        begin

            CurrentListView.Hint := '|'+CurrentListView.Columns.Items[i].Caption+' = '+ListItem.SubItems.Strings[i-1];

        end;
        Break;
      end;
    end;
  end else
  begin
    CurrentListView.Hint := '';
  end;
end;
Wenn ich mich jetzt mit dem Maus über TListView bewege, dann wird Hint-Eigenschaft richtig gesezt. ( das kann ich im StatusBar auslesen ). Das Ganze funktionier solange ich das HorizontalScrollBar (von TListView) in Ruhe lasse. Wenn es aber "nach rechts" bewege, um die Einträge zu sehen, die unsichtbar waren, dann liefert die Procedur "HostListViewMouseMove" falsche ergebnisse. Mir ist auch klar warum es so ist. Ich weiss aber nicht, wie ich das korrigieren könnte. Weisst jemand?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat