Ver Mensaje Individual
  #14  
Antiguo 16-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Reputación: 19
olbeup Va camino a la fama
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
Responder Con Cita