Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con ComboBox (https://www.clubdelphi.com/foros/showthread.php?t=81528)

barakuda 22-11-2012 03:54:50

Problemas con ComboBox
 
Buenas noches.

Tengo una duda a cerca de los ComboBox verán;

Se que mediante:

Código Delphi [-]
 while not AdoQuery4.Eof do
 begin
 form1.Modif_HW1.ComboBox1.Items.Add(AdoQuery4.Fields[0].Text + AdoQuery4.Fields[1].Text);
 AdoQuery4.Next;
 end;

Yo cargo al combobox con [texto1 texto2] pero no quiero que se vea el texto1 solo el texto2
La razon de cargar el texto1 es porque necesito de ese dato para reflejarlo en otra consulta.

Saben si hay alguna manera donde capturando los datos de dos columnas en un combobox solo muestre una y como hacer para capturar a la otra para reflejarla por ejemplo en en un Edit

Gracias por adelantado y un saludo

ecfisa 22-11-2012 05:46:47

Hola barakuda.

Te ejemplifico dos modos.

Usando un TString aparejado:
Código Delphi [-]
...
implementation

var
  TS: TStrings;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TS:= TStringList.Create;
  while not ADOQuery.Eof do
  begin
    ComboBox1.Items.Add(ADOQuery.Fields[0].Text);
    TS.Add(ADOQuery.Fields[1].Text);
    ADOQuery.Next;
  end;
end;
....
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := TS[ComboBox1.ItemIndex];
end;
...
procedure TForm1.FormDestroy(Sender: TObject);
begin
  TS.Free;
end;

Mediante el método AddItem del ComboBox:
Código Delphi [-]
...
implementation

type
  TCadena = class
    Text: string;
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  cad: TCadena;
begin
  while not ADOQuery.Eof do
  begin
    cad := TCadena.Create;
    cad.Text := ADOQuery.Fields[1].Text;
    ComboBox1.AddItem(ADOQuery.Fields[0].Text, TObject(cad));
    ADOQuery.Next;
  end;
end;
...
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := TCadena(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).Text;
end;
...
procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
  for i:= ComboBox1.Items.Count-1 downto 0 do
    ComboBox1.Items.Objects[i].Free;
end;

Saludos.

nlsgarcia 22-11-2012 18:15:12

barakuda,

Revisa estos links:
Cita:

Creating a TString object
http://delphi.about.com/cs/adptips20...ltip0602_2.htm

Store a String (or an Object) Along with a String in a ListBox or ComboBox
http://delphi.about.com/od/vclusing/..._addobject.htm

Freeing Objects in Delphi's TStrings Items
http://delphi.about.com/od/delphitip...gs-objects.htm
Espero sea útil :)

Nelson.

barakuda 22-11-2012 19:54:52

Gracias ecfisa por tus sujerencias, probare la sujerencia que me haces del metodo TString aparejado ya que la consigo entender bien.
Gracias a nlsgarcia por los enlaces que me pasas tomo nota y los iré practicando.

Muchas gracias a los dos

nlsgarcia 23-11-2012 00:56:24

barakuda,

Cita:

Empezado por barakuda (Mensaje 450203)
Gracias a nlsgarcia por los enlaces que me pasas tomo nota y los iré practicando.

Te anexo un ejemplo del uso del método AddItem del ComboBox el cual permite cargar dos valores asociados. El segundo valor debe ser un objeto dado que el método lo requiere, esto facilita la carga de cualquier tipo y cantidad de valores mediante la definición del objeto apropiado. Este ejemplo declara un objeto que contiene un string y su manipulación en un ComboBox.

El ejemplo esta en el link: http://terawiki.clubdelphi.com/Delph...ox+AddItem.rar

Espero sea útil :)

Nelson.

barakuda 23-11-2012 07:59:32

Gracias nlsgarcia lo estudiare

gracias por tu ayuda.


La franja horaria es GMT +2. Ahora son las 06:04:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi