DBGrid a Listbox - agregar / quitar elementos

Para simplificar una pregunta anterior: tengo un DBGrid, un ListBox y 2 botones (Agregar y Quitar):
* Al seleccionar un elemento del DBGrid y presionar el botón agregar, ese elemento debe ser copiado al ListBox. No tiene que permitir la entrada de elementos duplicado
* Al seleccionar un elemento del ListBox y presionar el botón quitar, debe eliminar el elemento del ListBox
¿Cómo logro esto?. Si tienen un ejemplo agradecería lo envíen a [email protected]...

1 respuesta

Respuesta
1
Siento no haber podido ayudarte antes, pero realmente me registré hoy mismo. No sé si ya habrás solucionado tu problema. No obstantes, ahí te pongo la forma cómo lo podrías hacer:
En el evento OnClick del botón añade, pon este código:
var
i:integer;
cadena:string;
encontrado:boolean;
begin
cadena:=dbgrid.Columns[0].Field.Text;
encontrado:=false;
for i:=0 to listbox.Items.Count-1 do
if cadena = listbox.items.Strings then
encontrado:=true;
if encontrado=false then
Listbox.Items.Add (dbgrid.Columns[0].Field.Text);
end;
//Con esto consigues añadir el registro solo cuando no esté en el listbox
En el evento OnMouseUp del listbox este otro código:
var
punto:tpoint;
begin
punto.x:=x;
punto.y:=y;
seleccionado:=listbox.ItemAtPos(punto, True);
//Aquí guardas el elemento seleccionado en el listbox
Este código ponlo en el evento onClic del botón borrar:
lista.Items.Delete (Seleccionado);
//Con esto borras el elemento seleccionado
Este otro en el evento onCreate del formulario:
seleccionado:=0;
Finalmente, declara la variable seleccionado de tipo integer en la sección Private.
Muchas gracias por tus respuestas y su calidad. 5 estrellitas bien merecidas para vos
Te ponga aquí la respuesta a una pregunta en la que pedías como localizar un registro de una tabla a partir de dos registros. Pongo aquí la respuesta pues me da error al ponerla en la pregunta correspondiente.
A continuación te pongo el código con el que puedes realizar las búsquedas:
Tabla.Open; //Abrimos la tabla
If Tabla.Locate('ID;Numero', VarArrayOf([id.text,numero.text]),[loPartialKey]) then //Si se encuentra el registro
begin
showmessage ('bien'); //muestra un mensaje
tabla.edit; //pone la tabla en modo edit
tabla.fieldbyname('Numero').AsInteger:=35; //cambia el valor del campo numero
end
else //sino
showmessage ('mal'); //muestra otro mensaje
tabla.close; //cierra la tabla
Te comento el funcionamiento de Locate en este ejemplo:
Tabla.Locate('ID;Numero', VarArrayOf([id.text,numero.text]),[loPartialKey])
'ID;Numero': indicas los campos en los que quieres realizar la búsqueda separados por punto y coma
VarArrayof ([id.text,numero.text]): indicas el valor que debe tomar cada campo respectivamente
[loPartialKey]: Indicas las opciones que vas a usar, en este caso, buscará cualquier campo que contenga la cadena de texto a buscar.
Te puse el ejemplo de cambiar el valor a 35 para que vieras como funciona lo de cambiar valores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas