Da hast Du aber Einiges durcheinandergeworfen. Zunächst einmal ist die Klasse kein "Teil" des Formulars, sondern eine eigenständige Klasse.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyClass =
class
private
FBezeichnung:
string;
FZahl: integer;
{ Private-Deklarationen }
public
property Bezeichnung:
string read FBezeichnung
write FBezeichnung;
property Zahl: integer
read FZahl
write FZahl;
{ Public-Deklarationen }
end;
TForm1 =
class(TForm)
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label4: TLabel;
Label5: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
Dann musst Du irgendwann (z.B. bei Klick eines Buttons) diese Klasse instanzieren (d.h. ein Objekt dieser Klasse anlegen) und den Items der ComboBox hinzufügen. Damit ist diese Instanz dann in den Comboboxitems hinterlegt. Beispiel:
Delphi-Quellcode:
procedure TForm1.ButtonHinzufuegenClick(Sender: TObject);
//Variable des Typs der oben deklarierten Klasse
var MyClass: TMyClass;
begin
//Anlegen der Instanz
MyClass := TMyClass.Create;
//Ändern der Eigenschaften dieser Instanz
MyClass.Bezeichnung := Edit1.Text;
MyClass.Zahl := StrToIntDef(Edit2.Text,0);
//Speichern der Instanz in den Items
ComboBox1.Items.AddObject(MyClass.Bezeichnung {das kann auch ein beliebiger anderer String sein},MyClass);
end;
Spätestens beim Zerstören des Formulars musst Du diese Instanzen dann auch wieder freigeben, sonst produzierst Du ein Speicherleck.
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
var i: integer;
begin
//von hinten nach vorn durchgehen und Objekte freigeben
for i := ComboBox1.Items.Count - 1 downto 0 do
ComboBox1.Items.Objects[i].Free;
end;
Auf ein bestimmtes Objekt kannst Du über den ItemIndex der ComboBox zugreifen.
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var aObject: TObject;
begin
//Objekt holen
aObject := ComboBox1.Items.Objects[ComboBox1.ItemIndex];
//ist das Objekt überhaupt zugewiesen?
if Assigned(aObject) then
//wenn ja, in TMyClass wandeln und das "Zahl"-Feld ausgeben
ShowMessage(IntToStr((aObject as TMyClass).Zahl));
end;
Ich hoffe, das hilft Dir weiter.