AGB  ·  Datenschutz  ·  Impressum  







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

Listview und Zeile und Spalte einer Zelle

Offene Frage von "Luckie"
Ein Thema von Luckie · begonnen am 13. Feb 2011 · letzter Beitrag vom 13. Feb 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Listview und Zeile und Spalte einer Zelle

  Alt 13. Feb 2011, 18:39
Ich brauche in einem Kontextmenü vom Listview die Zeile und die Spalte einer Zelle in der der Benutzer das Kontextmenü geöffnet hat. Hat da jemand eine Idee, wie ich da drankommen könnte? ich habe da keinen Plan.

Also über
Delphi-Quellcode:
procedure TfrmMain.lvCSVFileMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage(IntToStr(x));
end;
bekomme ich ja die Koordinaten relativ zur linken oberen Ecke des Listviews. Aber wie komme ich aus den Koordinaten jetzt an den Spalten- und Zeilenindex?
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (13. Feb 2011 um 21:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Listview und Zeile und Spalte einer Zelle

  Alt 13. Feb 2011, 22:46
Habe es hinbekommen.

Einzelnes Feld:
Delphi-Quellcode:
procedure TfrmMain.lvCSVFileMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
  begin
    FX := X;
    FY := Y;
    FPopupMenuListItem := lvCSVFile.GetItemAt(X, Y);
  end;
end;

procedure TfrmMain.GetSubItemFromPoint(X, Y: Integer; var SubItem: Integer);
var
  hti: TLVHitTestInfo;
begin
  hti.pt := Point(X, Y);
  SubItem := ListView_SubItemHitTest(lvCSVFile.Handle, @hti);
  if SubItem > 0 then
  begin
    FPopupMenuListItem := lvCSVFile.Items[SubItem];
    SubItem := hti.iSubItem;
  end
  else
    FPopupMenuListItem := nil;
end;

procedure TfrmMain.pmCopyFieldClick(Sender: TObject);
var
  SubItem: Integer;
begin
  GetSubItemFromPoint(FX, FY, SubItem);
  if Assigned(FPopupMenuListItem) then
  begin
    if SubItem > 0 then
      Clipboard.AsText := FPopupMenuListItem.SubItems[SubItem-1];
  end;
end;
Ganze Zeile:
Delphi-Quellcode:
procedure TfrmMain.pmCopyRowClick(Sender: TObject);
var
  s: AnsiString;
  i: Integer;
begin
  if Assigned(FPopupMenuListItem) then
  begin
    for i := 0 to FPopupMenuListItem.SubItems.Count - 1 do
    begin
      s := s + FPopupMenuListItem.SubItems[i] + FDelimiter;
    end;
    Setlength(s, Length(s) - 1);
    ClipBoard.AsText := s;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 19:02 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