Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Opción "Añadir..." en un DBLookupComboBox (https://www.clubdelphi.com/foros/showthread.php?t=78850)

Chandra_ 21-05-2012 11:27:46

Opción "Añadir..." en un DBLookupComboBox
 
Hola

Quisiera poner al final de los datos listados en un DBLookupComboBox la opción "Añadir nuevo...", para que el usuario, viendo que el elemento no está en la tabla, pueda añadirlo a dicha tabla para poderlo seleccionar más tarde en ese DBLookupComboBox.

Al pinchar sobre la opción "Añadir nuevo..." yo abriría por código una nueva ventana en la que se pudiera añadir un nuevo elemento a la tabla, de manera que al terminar y cerrar la ventana, ya estuviera listo y añadido el nuevo elemento dentro de la lista.

He estado mirando el TJvDBLookupCombo, que tiene una propiedad EmtyValue y tal, pero no creo que me sirva para esto que busco.

La opción cutre que siempre uso es poner un botoncillo junto al combo para añadir más elementos a la tabla que luego puedan ser seleccionados desde ese combo... pero es que hoy me he levantado creativo XD

No sé si me he explicado bien... Si alguien me ha entendido, ¿alguna idea? :)

ecfisa 21-05-2012 13:42:02

Hola Chandra_.

Desconozco el componente TJvDBLookupCombo y si lo permita, pero el TDBLookupComboBox no está pensado para lo que deseas hacer; trabaja en relación directa con los datos existentes en un TDataSet.

Aunque no uso esa modalidad de elección/inserción, una opción con los componentes estandard es utilizar un TComboBox. Por ejemplo:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Clear;  // Limpiar combo
  with DataSet do  // llenar el combo 
    while not Eof do
    begin
      ComboBox1.Items.Add(FieldByName('TU_CAMPO').AsString);
      Next;
    end;
  ComboBox1.Items.Add('AÑADIR NUEVO'); // agregar opción nuevo
end;

...

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  with Sender as TComboBox do
    if ItemIndex = Items.Count-1 then  // Opción 'AÑADIR NUEVO'
    begin
      // Aquí se llamaría al código de inserción
      //...
      Items[ItemIndex]:= 'Nuevo TU_CAMPO insertado';   // valor del campo
      Items.Add('AÑADIR NUEVO'); // agregar opción al final
    end
    else
      DataSet.Locate('TU_CAMPO', Text, []); // O posicionar con una consulta...
end;
...

Saludos.

Chandra_ 21-05-2012 14:34:15

Cita:

Empezado por ecfisa (Mensaje 433072)
Hola Chandra_.

Desconozco el componente TJvDBLookupCombo y si lo permita, pero el TDBLookupComboBox no está pensado para lo que deseas hacer; trabaja en relación directa con los datos existentes en un TDataSet.

Aunque no uso esa modalidad de elección/inserción, una opción con los componentes estandard es utilizar un TComboBox. Por ejemplo:

[...]

Muy interesante, ecfisa. No había pensado en la posibilidad de usar una ComboBox sencilla en lugar de un componente dataware y, la verdad, me gusta mucho :)

Voy a probar a ver qué tal. Muchas gracias, ecfisa.


La franja horaria es GMT +2. Ahora son las 07:14:27.

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