Vale, lo que puedes hacer es en vez de utilizar Add, vas a utilizar AddObject, es mas útil.
Lo primer es crearte un objecto
Código Delphi
[-]type
TFillItem = class
private
FIDFieldValue: Integer;
FTitleField: String;
FFieldValue: Variant;
FFieldWide: WideString;
published
property IDFieldValue: Integer read FIDFieldValue write FIDFieldValue;
property TitleField: String read FTitleField write FTitleField;
property FieldValue: Variant read FFieldValue write FFieldValue;
property FieldWide: WideString read FFieldWide write FFieldWide;
end;
Lo segundo es crearte un procedimiento para cargar todos los artículos en el ComboBox:
Código Delphi
[-]procedure TForm1.LoadArticlesCB;
var
FillItem: TFillItem;
begin
with DataSet do
while (not Eof) do
begin
FillItem := TFillItem.Create;
FillItem.IDFieldValue := FieldByName('IDARTICULO').AsInteger;
FillItem.FieldValue := FieldByName('IMPORTE').AsFloat;
FillItem.TitleField := FieldByName('DETALLE').AsString;
FillItem.FieldWide := FieldByname('OBSERVACIONES').AsString;
ComboBox1.Items.AddObject(FillItem.TitleField, FillItem);
Next;
end;
end;
Luego, para buscar el código
Código Delphi
[-]...
var
FillItem: TFillItem;
begin
with ComboBox1 do
begin
ix := Items.IndexOf(Text);
if (ix <> -1) then
begin
FillItem := Items.Objects[ix];
Text := Text + ' - ' + FillItem.TitleField;
Edit2.SetFocus;
end
else
ShowMessage('Artículo no encontrado [' + Text + ']');
end;
end;
y cuando se cierre la aplicación
Código Delphi
[-]procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
nI: Integer;
begin
with ComboBox1 do
for nI := 0 to (Items.Count -1) do
TFillItem(Items.Objects[nI]).Free;
end;
Espero que te sirva
Un saludo