Einzelnen Beitrag anzeigen

Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: zusatzinformationen in tlistbox

  Alt 28. Apr 2009, 01:04
Hallo eric – the master,

man kann das auch mit einem Object lösen.

Zuerst das Object:

Delphi-Quellcode:
unit uListBoxObjectClass;

interface

uses
  Classes;

type
  Ttest= Class(TObject)
  private
    FWert1: String;
    FWert2: String;
    FWert3: String;
    procedure GetFWerte1(const Value: String);
    procedure GetFWerte2(const Value: String);
    procedure GetFWerte3(const Value: String);
    function SetFWert1: String;
    function SetFWert2: String;
    function SetFWert3: String;
  public
    constructor Create();
    destructor Destroy; override;
    property Wert1: String Read SetFWert1 write GetFWerte1;
    property Wert2: String Read SetFWert2 write GetFWerte2;
    property Wert3: String Read SetFWert3 write GetFWerte3;
  End;

implementation

{ Ttest }

constructor Ttest.Create;
begin
  inherited Create;
end;

destructor Ttest.Destroy;
begin
  inherited;
end;

procedure Ttest.GetFWerte1(const Value: String);
begin
  if Value<>FWert1 then
  begin
    FWert1:= Value;
  end;
end;

procedure Ttest.GetFWerte2(const Value: String);
begin
  if Value<>FWert2 then
  begin
    FWert2:= Value;
  end;
end;

procedure Ttest.GetFWerte3(const Value: String);
begin
  if Value<>FWert3 then
  begin
    FWert3:= Value;
  end;
end;

function Ttest.SetFWert1: String;
begin
  Result:= FWert1;
end;

function Ttest.SetFWert2: String;
begin
  Result:= FWert2;
end;

function Ttest.SetFWert3: String;
begin
  Result:= FWert3;
end;

end.
Und jetzt das Hauptprogramm:

Delphi-Quellcode:
unit frmListBox;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uListBoxObjectClass;

type
  TForm3 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    procedure ListBox1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Test: TTest;
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  strText: String;
begin
  Test:= TTest.Create; // Object erstellen
  Test.Wert1:= Edit1.Text; // Text im Object ablegen
  Test.Wert2:= Edit2.Text;
  Test.Wert3:= Edit3.Text;
  strText:= Edit4.Text;
  ListBox1.AddItem(strText, Test); // In die Listbox
end;

procedure TForm3.FormDestroy(Sender: TObject);
var
  I: Integer;
begin
   for i:= ListBox1.Count - 1 downto 0 do
   begin
     Test:= TTest(ListBox1.Items.Objects[i]);
     if Test<>NIL then
     begin
       freeAndNil(Test);
     end;
   end
end;

procedure TForm3.ListBox1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ListBox1.Count - 1 do
  begin
    if ListBox1.Selected[i] then
    begin
      Edit1.Clear;
      Edit2.Clear;
      Edit3.Clear;
      Edit1.Text:= TTest(ListBox1.Items.Objects[i]).Wert1;
      Edit2.Text:= TTest(ListBox1.Items.Objects[i]).Wert2;
      Edit3.Text:= TTest(ListBox1.Items.Objects[i]).Wert3;
    end;
  end;
end;

end.
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat