AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView, welches Item unter Cursor

Ein Thema von DieHardMan · begonnen am 17. Feb 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
DieHardMan

Registriert seit: 16. Jul 2002
Ort: Stuttgart
68 Beiträge
 
#1

ListView, welches Item unter Cursor

  Alt 17. Feb 2006, 05:31
Lässt sich irgendwie das genaue Item unter der aktuellen Position des Mauscursors bestimmen? Ich kann zwar das ganze Item mit ItemAt auslesen aber müsste noch wissen ob es Caption oder SubItem[x] ist. Um das herauszufinden bräuchte ich noch die Spaltennummer, aber die findet man nur raus wenn man auf den Spaltenkopf klickt. Irgendeine Idee? Hab das schonmal gemacht, aber damals mit der ListView von TMS und da ging das.
Alle meine Entchen...
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: ListView, welches Item unter Cursor

  Alt 17. Feb 2006, 07:00
Möglichkeit 1: Du nimmst ein VirtualStringTree.

Möglichkeit 2: Du nimmst diese meine Funktion. Sie liefert true, wenn sie etwas gültiges findet. Kleiner "Nachteil": Es muss RowSelect angeschalten sein, sonst werden keine Subitems gefunden.

Delphi-Quellcode:
//cut here ------------------------------------------------------------------------
function TForm2.GetHitTestInfoEx(X, Y: Integer; const ListView: TListView;
  var Item: TListItem; var Column: Integer): Boolean;
var
  HT : THitTests;
  OffSet : Integer;
  idx : Integer;
begin
  Result:=false;
  Column:=-1;

  HT:=ListView.GetHitTestInfoAt(X,Y);

  if (not (htAbove in HT)) and (not (htBelow in HT)) and (not (htNoWhere in HT)) then
  begin //ok, we are on an item
    Result:=true;

    Item:=Listview.GetItemAt(X,Y);
    OffSet:=0;
    for idx:=0 to ListView.Columns.Count-1 do
      if (x>=OffSet) and (x<=OffSet+ListView.Columns[idx].Width) then
      begin
        Column:=idx;
        exit;
      end
      else
        Inc(Offset,ListView.Columns[idx].Width);
      
    Result:=false;
  end;
end;
//cut here ------------------------------------------------------------------------

procedure TForm2.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Item : TListItem;
  col : Integer;
begin
  if GetHitTestInfoEx(x,y,ListView1,Item,col) then
    Self.Caption:=Item.Caption+' - Spalte '+IntToStr(col)
  else
    Self.Caption:='Nischt wird .... nö .... geh weg';
end;
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz