Meine ComboBox hat AutoDropDown und Sorted aktiviert, sonst alles Standardwerte. Items werden zur Laufzeit aus Datei geladen und eingefügt.
Delphi-Quellcode:
type
TItemEntry = class
public
ID, Desc: string;
constructor Create(AID, ADesc: string);
end;
TIDEntry = class
public
ID: string;
constructor Create(AID: string);
end;
...
procedure TfrmMain.cbItemsChange(Sender: TObject);
begin
if cbItems.ItemIndex > -1 then
begin
lblID.Caption := TItemEntry(cbItems.Items.Objects[cbItems.ItemIndex]).ID;
lblDesc.Caption := TItemEntry(cbItems.Items.Objects[cbItems.ItemIndex]).Desc;
end;
end;
procedure TfrmMain.btnAddClick(Sender: TObject);
begin
Showmessage(inttostr(cbItems.ItemIndex)); // <-- da -1
mmSQL.Lines.Add(Format(' (%s, %s, %d, %d),',
[TIDEntry(cbMobs.Items.Objects[cbMobs.ItemIndex]).ID,
TItemEntry(cbItems.Items.Objects[cbItems.ItemIndex]).ID,
seQuest.Value,
seChance.Value]));
end;
procedure TfrmMain.cbItemsKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
Showmessage(IntToStr(cbItems.ItemIndex)); // <-- hier ist er noch normal. Allerdings scheint die Box direkt danach auf -1 zu gehen, das ist nur so wenn hier ShowMessage ist.
end;
Ich wähle das Item aus indem ich in die Box z.B. "Silver Ore" eingebe und dann Enter drücke.