Hallo Gerri,
ich habe dir mal schnell ein kleines Beispiel zusammengeklickt mit dem du etwas rumspielen kannst. Vielleicht bringt es dich ja weiter.
Deine Zeile
ListView1.Items[1].Subitem[3];
sieht soweit OK aus. Allerdings heißt das nicht, dass du nicht evtl. vergessen hast, überhaupt (Sub)Items hinzuzufügen.
Kurze Erklärung zum Programm:
Beim Start der Anwendung wird im OnShow Event der Form der Header der TListView Komponente erzeugt. Danach werden ein paar Items hinzugefügt. Das ist ein Random Wert zwischen 1 und 100.
In der SpinEdit Komponente kannst du auswählen, welcher Text in dem Label unter dem ListView angezeigt werden soll.
Code:
0 = Text vom Hauptitem
1 = Text vom Subitem 1
2 = Text vom Subitem 2
3 = Text vom Subitem 3
Im Anhang ist ein kompiliertes Beispiel enthalten. Da du im Eröffnungspost angegeben hast, dass du Delphi Berlin verwendest, sollte es aber kein Problem für dich sein, die Anwendung erneut (mit Änderungen) zu kompilieren.
Anbei mal noch der SourceCode und ein Bild der Anwendung, damit andere da direkt Einblick haben ohne sich das ganze Projekt laden zu müssen.
Viel Spaß damit. Wenn du Fragen dazu hast ...
Delphi-Quellcode:
unit Main;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ComCtrls,
Vcl.StdCtrls,
Vcl.Samples.Spin, System.UITypes;
type
TfrmListViewSample =
class(TForm)
lv1: TListView;
Label1: TLabel;
btnGetItemText: TButton;
seColumnSelector: TSpinEdit;
lblItemCaption: TLabel;
procedure FormShow(Sender: TObject);
procedure btnGetItemTextClick(Sender: TObject);
private
procedure CreateHeader;
procedure CreateItems;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
frmListViewSample: TfrmListViewSample;
implementation
{$R *.dfm}
procedure TfrmListViewSample.FormShow(Sender: TObject);
begin
CreateHeader;
CreateItems;
end;
procedure TfrmListViewSample.btnGetItemTextClick(Sender: TObject);
begin
if Assigned(lv1.Selected)
then
begin
if (seColumnSelector.Value = 0)
then
lblItemCaption.Caption := lv1.Selected.Caption
else
lblItemCaption.Caption := lv1.Selected.SubItems[seColumnSelector.Value - 1];
end
else
begin
MessageDlg('
Es wurde kein Item ausgewählt.', mtWarning, [mbOK], 0);
end;
end;
procedure TfrmListViewSample.CreateHeader;
var
i: Integer;
Column: TListColumn;
begin
for i := 0
to 3
do
begin
Column := lv1.Columns.Add;
Column.Caption := Format('
Column %d', [i]);
Column.Width := 75;
end;
end;
procedure TfrmListViewSample.CreateItems;
var
Item: TListItem;
i: Integer;
begin
for i := 0
to Random(100) + 1
do // Damit wenigstens immer 1 Item hinzugefügt wird
begin
Item := lv1.Items.Add;
Item.Caption := Format('
Main Item %d', [i]);
Item.SubItems.Add(Format('
Subitem %d.1', [i]));
Item.SubItems.Add(Format('
Subitem %d.2', [i]));
Item.SubItems.Add(Format('
Subitem %d.3', [i]));
end;
end;
end.