Delphi - ERROR: se duplica items en combobox

   
Vista:

ERROR: se duplica items en combobox

Publicado por homero (17 intervenciones) el 03/05/2013 15:07:16
hola amigos.

Estoy aciendo un sistemita, necesito alguna ayuda.

Tengo un Combobox1, el cual carga items de una base datos, por ejemplo carga colores
azul
amarillo
verde
Nuevo color

La opcion NUEVO COLOR es para agregar un color que no esta en la base datos, ento0nces selecciono ese item del comobox, me abrira una ventanita, donde ingresare el nuevo color y se guardara en la BD.

El problema que me di cuenta es que, por ejemplo si selecciono un item, por ejemplo AZUL... y me equivoque al seleccionar, y al presionar la flechita del combobox para elejir el imtem correcto, veo que me repiten todos los colores, quedando asi...

azul
amarillo
verde
Nuevo color
azul
amarillo
verde
Nuevo color

si ahora selecciono el color correcto, despues hago click en la flechita del combobox, me hace otra copia de todas las opciones "items".

azul
amarillo
verde
Nuevo color
azul
amarillo
verde
Nuevo color
azul
amarillo
verde
Nuevo color

Caunto mas veces selecciono un item, se copia otra ves en el combobox

Este es el codigo que uso, alguna idea de donde estoy fallando?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TFAltaJud.ComboBox1Change(Sender: TObject);
begin
   ADOQuery1.Active := False;
   ADOQuery1.SQL.Text := 'Select color from Tablacolor';
   ADOQuery1.Active := True;
   While not ADOQuery1.Eof do
   begin
      Combobox1.Items.Add(ADOQuery1.Fields[0].Text);
      ADOQuery1.Next;
   end;
   AdoQuery1.Active := False;
 
   //codigo k detecta opcion NUEVO COLOR
   //y abre nueva ventanita para ingresar el color
   if ComboBox1.Items[ComboBox1.ItemIndex] = 'Nuevo Ítem' then
   begin
 
  form1 := TForm1.Create(Application);
  //  modal
  form1.ShowModal;
  // tomo el  valor seleccionado
  //Str := Form1.Edit1.Text;
  // liberamos
  FreeAndNil(form1);
  end;
 
 
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ERROR: se duplica items en combobox

Publicado por E.T. (1108 intervenciones) el 03/05/2013 17:49:04
El codigo donde lees de la base de datos, hay que moverlo a otro lugar, por ejemplo al evento OnShow de tu form, o agregar una par de lineas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TFAltaJud.ComboBox1Change(Sender: TObject);
begin
  ADOQuery1.Active := False;
  ADOQuery1.SQL.Text := 'Select color from Tablacolor';
  ADOQuery1.Active := True;
  Combobox1.Items.Clear;//----------------------AGREGAR ESTA LINEA
  Combobox1.Items.Add('Nuevo Ítem');//------AGREGAR ESTA LINEA
  While not ADOQuery1.Eof do begin
    Combobox1.Items.Add(ADOQuery1.Fields[0].Text);
    ADOQuery1.Next;
  end;
  AdoQuery1.Active := False;
  //codigo k detecta opcion NUEVO COLOR 
  //y abre nueva ventanita para ingresar el color 
  if ComboBox1.Items[ComboBox1.ItemIndex] = 'Nuevo Ítem' then begin
    form1 := TForm1.Create(Application);
    // modal form1.ShowModal; 
    // tomo el valor seleccionado 
    //Str := Form1.Edit1.Text; 
    // liberamos 
    FreeAndNil(form1);
  end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar