AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ListView Data befüllen?

Ein Thema von SneakyBagels · begonnen am 4. Jun 2017 · letzter Beitrag vom 5. Jun 2017
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: ListView Data befüllen?

  Alt 4. Jun 2017, 16:41
Wozu der Record? Objektinstanzen sind ja auch Pointer, die kann man da direkt hineingeben. Ich hab mal schnell ein Beispiel zusammengeklickert, es werden die Standard-Komponentennamen verwendet:
Delphi-Quellcode:
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Generics.Collections,
  Vcl.StdCtrls, Vcl.ComCtrls;

type
  TDingens = class
  private
    FName: string;
    FZahl: integer;
    procedure SetName(const Value: string);
    procedure SetZahl(const Value: integer);
  public
    property Name: string read FName write SetName;
    property Zahl: integer read FZahl write SetZahl;
  end;

  TForm5 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    FListe: TObjectList<TDingens>;
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

{ TDingens }

procedure TDingens.SetName(const Value: string);
begin
  FName := Value;
end;

procedure TDingens.SetZahl(const Value: integer);
begin
  FZahl := Value;
end;

procedure TForm5.Button1Click(Sender: TObject);
var
  Dingens: TDingens;
  Item: TListItem;
begin
  for Dingens in FListe do
    begin
      Item := ListView1.Items.Add;
      Item.Caption := Dingens.Name;
      Item.SubItems.Add(Dingens.Zahl.ToString);
      Item.Data := Dingens;
    end;
end;

procedure TForm5.FormCreate(Sender: TObject);
var
  Dingens: TDingens;
begin
  FListe := TObjectList<TDingens>.Create;

  Dingens := TDingens.Create;
  Dingens.Name := 'Hein Blöd';
  Dingens.Zahl := 42;
  FListe.Add(Dingens);

  Dingens := TDingens.Create;
  Dingens.Name := 'Max Mustermann';
  Dingens.Zahl := 100;
  FListe.Add(Dingens);

  Dingens := TDingens.Create;
  Dingens.Name := 'Klara Korn';
  Dingens.Zahl := 3;
  FListe.Add(Dingens);

  Dingens := TDingens.Create;
  Dingens.Name := 'Rudi Rüssel';
  Dingens.Zahl := 150;
  FListe.Add(Dingens);
end;

procedure TForm5.FormDestroy(Sender: TObject);
begin
  FListe.Free;
end;

end.
Jetzt sind die TDingens-Instanzen sowohl im Data-Feld des entsprechenden ListViewItems als auch in der Objektliste abgelegt. Das bedeutet dann aber, dass man nicht mehr auf Data zugreifen sollte, wenn die Liste bereits freigegeben wurde.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz