Ir al contenido


Foto

[RESUELTO] Dos valores en un TComboBox


  • Por favor identifícate para responder
7 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 19 julio 2011 - 11:44

Hola a todos, ¿hay forma de lograr que en un ComboBox guardar un valor aparte del que se muestra para luego obtenerlo?, algo como esto:

ComboBox.Items -> Muestra la lista de ciudades (Por ejemplo)
ComboBox.Items.Data -> Guardar el ID de la ciudad

lo que quiero es que al seleccionar una ciudad en el combo tambien obtenga el ID de la mismas para guardarla en otra tabla, para esta situación no me vale el Uso del DBLookUpComboBox ni el DBListBox. Es parecido al Combo de HTML:

<Option value="9999">Madrid</option>

Aquí se muestra el dato Madrid y el value es el ID de la misma, espero se entienda.

Fleon Xd
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 19 julio 2011 - 11:57

Eso lo hace el DBlookupComboBox ligandolo con la otra tabla en las propiedades DataField y DataSource.

Salud OS
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 19 julio 2011 - 11:59



delphi
  1. type
  2.   TMiObjeto = class(TObject) //le puedes poner el nombre que quieras siempre y cuando empiece con una "T"
  3.     ID: Integer;
  4.   end;
  5.  
  6. procedure TForm1.AddToCB;
  7. var
  8.   obj: TMiObjeto;
  9. begin
  10. with DataSet do begin //Donde dataset es TTable que uses
  11.   First;
  12.   while not eof do
  13.   begin
  14.     obj := TMiObjeto.Create;
  15.     obj.ID := FieldByName('ID').AsInteger; //Campo Id de la tabla
  16.     ComboBox1.Items.AddObject(FieldByName('NAME').AsString, TMiObjeto(obj));
  17.     obj.Free;
  18.     Next;
  19.   end; //While...Not
  20. end;// with...Do
  21. end;



Saludos.
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 19 julio 2011 - 12:06

No se si con un combobox podrias realizar eso, pero podrias ocupar un ClientDataSet con un dbLookupCombobox
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 19 julio 2011 - 12:19

No se si con un combobox podrias realizar eso, pero podrias ocupar un ClientDataSet con un dbLookupCombobox


Pues lo acabo de demostrar en el post anterior ;), sólo que me faltó colocar cómo obtener el valor o ID de cada Ciudad en el ComboBox, sería así:



delphi
  1. procedure TForm1.GetIDFromCB(cID: Integer);
  2. var
  3.   obj: TMiObjeto;
  4. begin
  5.   Obj := ComboBox1.Items.Objects[cID] as TMiObjeto;
  6.   CityID := obj.ID; //CityID es una variable Global
  7. end;



Saludos.
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 19 julio 2011 - 12:40

jejej pero no es con el combobox como tal, ademas si ya tienes los datos ligados a una tabla porque no usar un dbLookupCombobox y ahorrarnos esfuerzo
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 19 julio 2011 - 12:53

Tal como lo indica Fleon, el DBLookUpComboBox no le sirve para lo que está buscando :).
  • 0

#8 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 19 julio 2011 - 02:06

He probado el código de enecumene y me funcionado de perlas, ¡Muchas Gracias! (y)
  • 0




IP.Board spam blocked by CleanTalk.