Hi,
warum genau scheidet denn der von Heiko gepostete Weg aus?
Ich denke der ist für dich hier immer noch der geeignetste. Zwei verschiedene Listen über den Index konsistent zu halten ist keine schöne Möglichkeit.
Um nochmal auf den Weg von Hoika zurückzukommen:
Du erstellst dir eine eigene Klasse und arbeitest mit einer TObjectList. Deine Klasse kapselt dabei alle Eigenschaften des Fahrzeugs, die TObjectList kann dann die einzelnen Instanzen speichern.
Delphi-Quellcode:
type
TAutor = class(TObject)
private
FVehicleTypeDe : String;
FVehicleTypeKey : String;
protected
procedure setVehicleTypeDe(const VehicleTypeDe : String);
procedure setVehicleTypeKey(const VehicleTypeKey : String);
public
constructor create(const VehicleTypeDe, VehicleTypeDe : String);
property VehicleTypeDe : String read FVehicleTypeDe write setVehicleTypeDe;
property VehicleTypeKey : String read FVehicleTypeKey write setVehicleTypeKey;
end;
...
constructor TAuto.create(const VehicleTypeDe, VehicleTypeDe : String);
begin
self.VehicleTypeDe := VehicleTypeDe;
self.VehicleTypeKey := VehicleTypeKey;
end;
procedure TAuto.setVehicleTypeDe(const VehicleTypeDe : String);
begin
self.FVehicleTypeDe := VehicleTypeDe;
end;
procedure TAuto.setVehicleTypeKey(const VehicleTypeKey : String);
begin
self.FVehicleTypeKey := VehicleTypeKey;
end;
Ok, das wäre nur das Beispiel wie deine Auto Klasse aussehen könnte. Wie man eine Instanz der Klasse erzeugt denke ich ist dir klar. Alle Autos die du erzeugst speicherst du einfach in einer TObjectList. Möchtest du nun aus dieser TObjectlist alle Autos, die ein PKW sind, dann kannst du das einfach so machen:
Delphi-Quellcode:
procedure PkwsToCombobox(const ComboBox : TComboBox; const List : TObjectList);
var i : Integer;
begin
if List.Count > 0 then
begin
for i := 0 to List.Count - 1 do
begin
if TAuto(List[i]).VehicleTypeKey = 'pkw' then
begin
ComboBox.Items.Add(TAuto(List[i]).VehicleTypeDe;
end; // if TAuto(List[i]).VehicleTypeKey = 'pkw'
end; // for i := 0 to List.Count - 1
end; // if List.Count > 0
end;
Schöner ist es allerdings, wenn du den TypeKey durch etwas anderes als einen String ersetzt. Du kannst z.B. einen eigenen Typen einführen:
Delphi-Quellcode:
type
TypeKey = (tkPkw, tkLwk, tkMotorad, ...);
Dann kommt es einfach nicht mehr auf Groß- und Kleinschreibung an und du es entfällt auch der Overhead der Arbeit mit Strings.
Gruß Der Unwissende