Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Recorrer tabla y asignar Items a comboBox

Hola foro, espero que anden bien!

Esta vez lo que necesito es recorrer una tabla de productos y asignar cada nombre de producto a un comboBox. Lo que hice fue hacer:

Código Delphi [-]
procedure TForm5VerOfertas.FormActivate(Sender: TObject);
var
 miNombre: string;
begin


  miNombre:= Form1.Label7.Caption;   
  DM.Subastas.Open;
  DM.Subastas.Prior;
  while not DM.Subastas.eof do begin
    if(DM.Subastas.FieldByName('nombre_usuario').AsString = miNombre) and (DM.Subastas.FieldByName('fecha_fin').AsDateTime < Date) then
      ComboElegirSubasta.Items.Add(DM.Subastas.FieldByName('titulo').AsString);
     DM.Subastas.Next;
  end;

end;

--EL PROBLEMA:

Esto me lo agrega en el comboBox uno abajo del otro, pero el problema es que NO me lo agrega de la forma: en el itemIndex 0 esta el producto 1, en el itemIndex 1 esta el producto 2 y asi.. Lo que hace esto es agregarme en el itemIndex 0 todos los nombres de los productos juntos, OSEA en el itemIndex 0 = producto1producto2 , lo mismo para los demas itemIndex ( ya que lo probe con un edit al lado para ver que era lo que me devolvia ).

ENTONCES : como hago para recorrer la tabla y asignar al itemIndex 0 el producto 1, en el itemIndex 1 el producto 2, y asi sucesivamente??porque no le doy pie con bola.

LES AGRADEZCO MUCHISIMO SUS AYUDAS!!
Responder Con Cita
  #2  
Antiguo 24-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.

La forma genérica de cargar un ComboBox es,
Código Delphi [-]
  ComboBox1.Clear;
  with tuDataSet do
  begin
    Open;
    while not Eof do
    begin
      if ( una_condición ) then  // Opcional
        ComboBox1.Items.Add(FieldByName('TU_CAMPO').AsString);
      Next;
    end;
  end;
pero, ¿ Que componente es Subastas ?

No te pregunto el nombre que le diste a la tabla en la bd ni el gestor de bd, me refiero a el nombre de la clase del componente Subastas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Antes que nada muchas gracias por tu respuesta,esa componente es un ADOTable que le di el nombre de "subastas" y que se encuentra en mi modulo de datos, espero que me hayas entendido! Ojala me puedas dar una ayuda!
Responder Con Cita
  #4  
Antiguo 24-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por DANIEL1818 Ver Mensaje
Ojala me puedas dar una ayuda!
¿Qué más ayuda quiéres, DANIEL1818? si te ha puesto el código, solamente tienes que sustituir "tuDataset" por el nombre del tuyo (dm.subasta)
Responder Con Cita
  #5  
Antiguo 24-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Qué más ayuda quiéres, DANIEL1818? si te ha puesto el código, solamente tienes que sustituir "tuDataset" por el nombre del tuyo (dm.subasta)
Ciertamente...

Daniel, mi pregunta sobre el componente apuntaba a que resulta mas simple de ver (y seguramente mas eficiente) filtrar los resultados antes de cargar el combo, para tu caso:
Código Delphi [-]
...
  with DM.Subastas do
  begin
    Close;
    Open;
    // Filtrar
    Filtered := False;
    Filter   := Format('NOMBRE_USUARIO = %s AND FECHA_FIN < %s', [MiNombre, DateToStr(Date)]);
    Filtered := True;

    // Copiar resultado al combo
    DisableControls;
    try
      while not Eof do
      begin
        ComboBox1.Items.Add(FieldByName('TITULO').AsString);
        Next;
      end;
    finally
      EnableControls;
      Filtered := False;  // Quitar el filtro
    end;
  end;
  ComboBox1.ItemIndex := 0;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-06-2015 a las 20:17:19. Razón: identación
Responder Con Cita
  #6  
Antiguo 24-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
A ver si me explico mejor, con el código que hice yo y el que me pasaste me lo agrega mal, es decir, si mi tabla tiene dos productos, mesa y silla, recorro la tabla y con el código que me pasaste y el que había hecho antes yo me pasa lo siguiente: cuando le pido que me imprima a través de un Edit lo que tiene el comboBox en la posición cero, lo imprime de esta forma: mesasilla. Esto tambien me pasa cuando le pido que me imprima lo que tiene el comboBox en la posición 1, me explico? Ese es el problema que no puedo resolver, por eso pedí si me podían dar una ayuda. Disculpen si moleste!
Responder Con Cita
  #7  
Antiguo 24-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.

Realmente no sé por que te sucede lo que te sucede. El resultado que mencionas es totalmente incongruente con el comportamiento del método Add de TStrings (método que usas para agregar los datos al combo).
Y tampoco encuentro otro modo de explicarte como cargar un TComboBox si no es de los modos que publiqué anteriormente...

Lo único que se me ocurre es demostrarte con un ejemplo real lo que te menciono. Para lo cuál te adjunto un demo con tabla incluida para que puedas evaluar el comportamiento y cotejarlo con tu código.

Por motivos de comodidad te envío un ejemplo con BDE (que viene con Delphi). La única diferencia es que usa un TTable en lugar de un TADOTable pero funcionalmente es lo mismo.

Crea una carpeta y descomprime allí el archivo.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Daniel1818.zip (4,7 KB, 7 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-06-2015 a las 22:40:39.
Responder Con Cita
  #8  
Antiguo 25-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Daniel.

Realmente no sé por que te sucede lo que te sucede. El resultado que mencionas es totalmente incongruente con el comportamiento del método Add de TStrings (método que usas para agregar los datos al combo).
Y tampoco encuentro otro modo de explicarte como cargar un TComboBox si no es de los modos que publiqué anteriormente...

Lo único que se me ocurre es demostrarte con un ejemplo real lo que te menciono. Para lo cuál te adjunto un demo con tabla incluida para que puedas evaluar el comportamiento y cotejarlo con tu código.

Por motivos de comodidad te envío un ejemplo con BDE (que viene con Delphi). La única diferencia es que usa un TTable en lugar de un TADOTable pero funcionalmente es lo mismo.

Crea una carpeta y descomprime allí el archivo.

Saludos



Gracias por tu respuesta. Ya lo hice y me sigue pasando lo mismo, incluso tambien probe con un TListBox y me pasa exactamente lo mismo, en el EDIT de prueba me sigue apareciendo "mesasilla" cuando me deberia aparecer un solo producto. Lo que yo tengo que hacer es seleccionar un item del comboBox y luego apreto un boton (TButton), y recien ahi le paso el parametro a la consulta (ADOquery), pero por esto que me pasa no puedo realizar dicho filtrado :/ , ni siquiera cuando el comboBox tiene dentro UN SOLO item, la consulta que hago (desde delphi 2010) es esta:

Código Delphi [-]
procedure TForm5VerOfertas.Button2Click(Sender: TObject);
var
  productoElegido: string;
begin
  productoElegido:= ComboElegirProducto.Items.Text;
  
  DM.QueryVerOfertasHaciaMi.Close;
  DM.QueryVerOfertasHaciaMi.Parameters.ParamByName('miProducto').Value:=productoElegido;
  DM.QueryVerOfertasHaciaMi.Open;

end;


Esta bien pasado el parámetro? ACLARACIÓN: si "productoElegido" lo asocio a un EDIT y le escribo el nombre del producto (para pasarle el parametro a la contulta) por el que quiero que me filtre anda correctamente, ahora con esta solución asociado al ComboElegirProducto (TComboBox) deja de funcionar.

Nuevamente gracias por sus respuestas y disculpen las molestias!
Responder Con Cita
  #9  
Antiguo 25-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.
Cita:
Empezado por DANIEL1818 Ver Mensaje
...Ya lo hice y me sigue pasando lo mismo,
¿ Estas diciendo que el programa que adjunté concatena columnas de los campos en cada item del combo ?



Cita:
Empezado por DANIEL1818 Ver Mensaje
...incluso tambien probe con un TListBox y me pasa exactamente lo mismo, en el EDIT de prueba me sigue apareciendo "mesasilla"
Por favor, agregá un TButton (Button1 o como se llame) y este código en el evento OnClick del mismo,
Código Delphi [-]
procedure TForm5VerOfertas.Button1Click(Sender: TObject);
begin
  if not DM.Subastas.Active then 
     DM.Subastas.Open;
  ShowMessage(DM.Subastas.FieldByName('titulo').AsString);
end;
y por favor comentanos textualmente que cadena muestra el cuadro de diálogo.


Cita:
Empezado por DANIEL1818 Ver Mensaje
...Esta bien pasado el parámetro?
Si el parámetro fué bién definido en el código SQL y la columna miProducto es de tipo TStringField o alguno de sus descendientes, la asignación es correcta.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 25-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Si pongo ese codigo el mensaje que me aparece es : Bicicleta.

Con respecto al programita que me pasaste le agregue un edit y un TButton y al onClick del Tbutton le puse el siguiente codigo:

Código Delphi [-]
Edit1.Text:=ComboBox1.Items.text;   //le pido el item ue esta seleccionado en ese momento

y el resultado en el edit es:

ArgentinaBrazilColombiaMexicoUnited States of America

(sale concatenado)

AHORA si copio lo del edit (el resultado que les acabo de mostrar) y los pego en un documento de texto, se pega de la siguiente forma:

Argentina
Brazil
Colombia
Mexico
United States of America

pd : sigo sin poder solucionar el problema de seleccionar un item del combo y pasarselo como paramero al ADOquery por el problema que te acabo de comentar
Responder Con Cita
  #11  
Antiguo 25-06-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
DANIEL1818,

Cita:
Empezado por DANIEL1818
...sigo sin poder solucionar el problema de seleccionar un item del combo...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   i : Integer;
begin
   for i := 1 to 5 do
      ComboBox1.Items.Add('Data-' + IntToStr(i));
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
   Edit1.Text := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Text := ComboBox1.Items.Text;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   Edit2.Text := ComboBox1.Items.Text;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   ComboBox1.Text := EmptyStr;
   Edit1.Text := EmptyStr;
   Edit2.Text := EmptyStr;
   Memo1.Text := EmptyStr;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Ejemplifica el uso de la propiedad TComboBox.Items de tipo TStrings, como se muestra en la siguiente imagen:



Revisa esta información relacionada a la propiedad TComboBox.Items (TStrings) :
Espero sea útil

Nelson.
Responder Con Cita
  #12  
Antiguo 25-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.
Cita:
Empezado por DANIEL1818 Ver Mensaje
Si pongo ese codigo el mensaje que me aparece es : Bicicleta.

Con respecto al programita que me pasaste le agregue un edit y un TButton y al onClick del Tbutton le puse el siguiente codigo:

Código Delphi [-]
Edit1.Text:=ComboBox1.Items.text;   //le pido el item ue esta seleccionado en ese momento

y el resultado en el edit es:

ArgentinaBrazilColombiaMexicoUnited States of America
...
¡ Con razón, ahora si me lo explico !

La propiedad TComboBox.Items.Text no contiene el item seleccionado en ese momento sino el grupo de cadenas delimitadas por CR y LF y que conforman el conjunto de items del combo.

Has confundido la propiedad TComboBox.Text que el combo hereda de la clase TControl y que contiene el texto asociado al control, con la propiedad TComboBox.Items.Text que pertenece la clase TStrings.

Para obtener el item actualmente seleccionado podes hacer:
Código Delphi [-]
   Edit1.Text := ComboBox1.Text;

o de otro modo, mediante la propiedad ItemIndex:
Código Delphi [-]
   Edit1.Text := ComboBox1.Items[ComboBox1.ItemIndex];

Pero de ninguna manera:
Código Delphi [-]
 Edit1.Text := ComboBox1.Items.Text;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 25-06-2015 a las 20:00:17. Razón: sintáxis
Responder Con Cita
  #13  
Antiguo 26-06-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Muchisimas gracias a todos!! ya pude solucionar el problema!! al combo le pedia comboBox.items.text y en realidad era ComboBox.text

Nuevamente muchas gracias por la buena onda, y por todas las soluciones e info que me pasaron!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No se ven los items de mi Combobox pablopessoa Varios 2 08-06-2010 20:53:30
ComboBox Seleccion de Items Marwuinh Varios 2 23-10-2008 00:28:41
Items de Combobox con Tabla Paradox lKinGl Conexión con bases de datos 12 21-10-2008 22:20:51
Combobox, tabla, campos, items Caral Varios 20 28-03-2007 18:34:12
Codigo en los Items de un Combobox juanjoassenza OOP 3 20-07-2006 10:19:03


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


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