Klar, man kann über den Displayvalue gehen oder TObject(2) als Objekt reinschreiben. Aber, dass das nur gerade die einfachste Hacklösung ist und kein seriöses Design ist, ist hoffentlich auch klar
Ich weiss nicht genau, woher diese 3 Punkte kommen und was du damit alles anstellst, aber idealerweise hast du ein Modellobjekt hinter jedem der 3 Punkte. In dem Modell kann zusätzlich ein technischer Schlüssel drin stehen und noch weitere Informationen und Abhängigkeiten zu anderen Objekten oder was auch immer. Über IndexOfObject kannst du dann den Index rausfinden.
Oder noch besser: Schreib eine class helper Klasse und stelle einige Convenience-Methoden und Properties zur Verfügung (z.B. SelectedObject). Könnte vielleicht so aussehen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| type TComboBoxHelper = class helper for TComboBox private function GetObject: TObject; procedure SetObject(const Value: TObject); public property SelectedObject: TObject read GetObject write SetObject; end;
function TComboBoxHelper.GetObject: TObject; begin if ItemIndex < 0 then Exit(nil);
Result := Items.Objects[ItemIndex]; end;
procedure TComboBoxHelper.SetObject(const Value: TObject); var Index: Integer; begin if Value <> nil then begin Index := Items.IndexOfObject(Value); if Index < 0 then raise ERangeError.Create('Value is out of range.'); ItemIndex := Index; end else ItemIndex := -1; end; |
Danach kannst du über
MyComboBox.SelectedObject := EDV; die gewünschte Selektion machen.
Du kannst zu jeder Zeit den Text ändern oder sogar die Zahl, die vor dem Text steht ändern und kriegst nie ein Durcheinander (der technische Schlüssel bleibt natürlich bestehen, die Zahl, die dem User angezeigt wird ist davon unabhängig). Du musst dir auch keine Sorgen über Eineindeutigkeit des Texts machen und dein Modell kannst du beliebig mit weiteren Properties erweitern.
Das mag für ein Kleinprojekt ein Overkill sein aber wenn das Projekt vielleicht kommerziell eingesetzt wird macht es sicher Sinn.