Ver Mensaje Individual
  #10  
Antiguo 18-02-2021
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Si almacenas el entero como objeto la búsqueda del valor también debe hacerse como un objeto.

Código Delphi [-]
//Almacenas el entero
ComboBox1.Items.AddObject('A', TObject(-1));

//Al usar el IndexOfObject debes buscar con el objeto 
ComboBox1.Items.IndexOfObject(TObject(-1)); //Debe responderte -1 si no lo encuentra y el índice correcto cuando lo encuentra

//Si el valor que buscas es un negativo y lo buscas sin convertirlo al objeto no lo va a encontrar
ACodigo := -1;
ComboBox1.Items.IndexOfObject(ACodigo); //Devuelve -1, el tiene almacenado un TObject(-1)

No tengo C++, así que el ejemplo está en Delphi

Código Delphi [-]
//Se alimenta el ComboBox desde una tabla en memoria con valores negativos y positivos
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.Items.Clear;

  FDMemTable1.First;
  while not FDMemTable1.Eof do
  begin
    ComboBox1.Items.AddObject(FDMemTable1Valor.AsString, TObject(FDMemTable1Codigo.AsInteger));
    FDMemTable1.Next;
  end;
end;

//En una caja de texto (Edit1) escribo el codigo que quiero buscar (-1, -10, 20, 30...)
procedure TForm1.Button2Click(Sender: TObject);
  var
    lCodigo: Integer;
begin
  Edit2.Clear;

  if not TryStrToInt(Edit1.Text, lCodigo) then
    Exit;

  if ComboBox1.Items.IndexOfObject(TObject(lCodigo)) >= 0 then
    Edit2.Text := ComboBox1.Items[ComboBox1.Items.IndexOfObject(TObject(lCodigo))];
end;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita