Ver Mensaje Individual
  #2  
Antiguo 27-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo tengo un procedimiento que me rellena los items de un ComboBox.
Items es una lista a la que puedes agregar un texto y un puntero mediante AddObject(Texto, Puntero);
El truco está en utilizar el valor del puntero y entenderlo como un entero en el que guardas valores numéricos (Normalmente le ID del elemento).
Código Delphi [-]
procedure TDMMain.RellenaEpoca(Lista: TStrings);
var
  Epoca : string;
  NroEpoca : integer;
begin
  // Primero limpio la lista de todos sus elementos
  Lista.Clear;

  // Obtengo los elementos de la base de datos
  Selec.Close;
  Selec.Open;
  Selec.Last;
  Selec.First;
  While not Selec.Eof do
  begin
     // El texto que va a mostrar el Combo
     Epoca := 'Epoca ' + IntToStr(SelecEPOCA_NUM.Value)

     // El id del dato (numero de epoca)
     NroEpoca := SelecEPOCA_NUM.Value;

     // Agrego estos datos a la lista
     Lista.AddObject(Epoca, Pointer(NroEpoca));

     Selec.Next;
  end;
end;

Luego lo utilizo así:
Código Delphi [-]
procedure TForm.FormCreate(Sender: TObject);
begin
  RellenaEpoca(ComboEpoca.Itmes);
  ComboEpoca.ItemIndex := 0;
end;

procedure TForm.ButtonClick(Sender: TObject);
var
  Epoca : string;
  NroEpoca : integer;
begin
  Epoca := ComboEpoca.Text;
  NroEpoca := integer(ComboEpoca.Items.Objects[ComboEpoca.ItemIndex]);

  Edit1.Text := 'Epoca seleccionada ' + IntToStr(Epoca);
  Edit2.Text := 'Nro de Epoca seleccionada ' + IntToStr(NroEpoca);
end;
Responder Con Cita