Einzelnen Beitrag anzeigen

Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Usereingaben im TListView

  Alt 9. Dez 2016, 23:13
Ich weiss der Thread ist alt, aber vielleicht kommt jemand (zB über die Suchfunktion) hierher.
Ich möchte auch den Inhalt einer Listview editieren - und bin zu folgender (Not-)Lösung gekommen:

Wenn die zu editierende Spalte fix ist, kann man zum Beispiel eine Inputbox verwenden und die Eingabe dann in's Listview zu schreiben.

Delphi-Quellcode:
procedure Change_Cell (AListView: TListView; const ARowIndex, AColIndex: Integer; const ANewContent: string);
// change content of a listview cell. colIndex 0 = leftmost column (caption)
var
  vItem: TListItem;
begin
  if aRowIndex < 0 then exit;
  if aRowIndex+1 > AListView.Items.Count then exit;
  // check ist wichtig. Denn bei ungültigem Index kommt sonst eine Zugriffsverletzung.
  vItem := AListView.Items[ARowIndex];

  if (AColIndex < 0) or (AColIndex > vItem.SubItems.Count) then
    begin
      messageDlg('Column doesnt exist.' , mtError, [mbOK], 0);
      exit;
    end;
  // change content of the listview:
  // lets use 0,1,2,3,... and translate to: caption,0,1,2,...
  if AColIndex=0 then
      vItem.Caption := ANewContent
  else
      vItem.SubItems[AColIndex-1] := ANewContent;
end;


procedure TForm1.ListView1Click(Sender: TObject);
var temp : string;
    i:integer;
begin
  if assigned(ListView1.Selected) then
  begin
    temp := inputbox('Fenstertitel','Enter name:','');
    i := listview1.Selected.Index;
    Change_Cell(ListView1, i, column, temp);
  end;
end;
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.

Geändert von isilive (10. Dez 2016 um 03:24 Uhr)
  Mit Zitat antworten Zitat