PDA

Ver la Versión Completa : de un list a otro??


UREÑA
06-07-2007, 21:16:35
hola amigos buen dia!!

tengo la siguiente duda??
tengo dos listbox como puedo cambiar un elemento de un list a otro y viceversa, de la misma forma me gustaria hacerlo con todos gracias?

un saludo a todos!!;)
gracias por anticipado

roman
06-07-2007, 21:24:54
Por ejemplo


ListBox2.Items.Add(ListBox1.Items[ListBox1.ItemIndex]);
ListBox1.Items.Delete(ListBox1.ItemIndex);


pasa el item seleccionado en ListBox1 a ListBox2.

// Saludos

eduarcol
06-07-2007, 21:27:23
if ListOrigen.ItemIndex = -1 then
Showmessage('Debe seleccionar el item a cambiar')
else
begin
ListDestino.Items.Add(ListOrigen.Items.string[ListOrigen.ItemIndex]);
ListOrigen.Items.Delete(ListOrigen.ItemIndex);
end;


Espero te sirva

eduarcol
06-07-2007, 21:29:11
Bueno no me di cuenta que roman habia posteado :P

Saludos Roman

jhonny
06-07-2007, 21:38:22
//Edito: Otra forma es...

Ejemplo, tenemos ListBox1, ListBox2, un botón llamado btDel1al2 y otro llamado btDel2al1 y con todo esto queremos hacer lo que pides:
La cosa es asi:

procedure TForm1.btDel1al2Click(Sender: TObject);
begin
ListBox1.MoveSelection(ListBox2);
end;

procedure TForm1.btDel2al1Click(Sender: TObject);
begin
ListBox2.MoveSelection(ListBox1);
end;

Y Listo, espero me haya hecho entender y que te sirva ;)

roman
06-07-2007, 21:46:11
¡Oh! Ni recordaba o sabía la existencia de MoveSelection. Así está mucho mejor, pues además permite mover varios ítemes a la vez. ¡Excelente jhonny!

// Saludos

eduarcol
06-07-2007, 21:50:23
Roman nos estamos quedando como dinosaurios :P

roman
06-07-2007, 21:54:49
Sí, ya veo. Ni hablar, hay que dar paso a las nuevas generaciones :)

// Saludos

UREÑA
06-07-2007, 21:56:48
hola amogos el ejemplo de jony no me funciana me marca un error con el move selection

[Error] unit_AluMat.pas(167): Undeclared identifier: 'MoveSelection'


procedure TForm1.agr_unoClick(Sender: TObject);
//Listbox2.Items.Strings[listbox2.Itemindex]:=Listbox1.Items.Strings[listbox1.itemindex];
//ListBox1.Items.Delete(ListBox1.ItemIndex);
ListBox1.MoveSelection(ListBox2);
end;


y el que me paso eduarcol (es el que esta entre comentarios)si me funciona de un list a otro, pero cuando quiero hacerlo alreves no funciona me borra el dato pero no me lo pone en el otro list

Listbox1.Items.Strings[listbox1.Itemindex]:=Listbox2.Items.Strings[listbox2.itemindex];
ListBox2.Items.Delete(ListBox2.ItemIndex);


gracias espero no ser demaciado tonto y no entender lo que me quicieron explicar gracias de antemano:o

eduarcol
06-07-2007, 22:13:44
a ver no me parece qe eso funcione muy bien

prueba esto

if ListBox1.ItemIndex = -1 then
Showmessage('Debe seleccionar el item a cambiar')
else
begin
ListBox2.Items.Add(ListBox1.Items.string[ListBox1.ItemIndex]);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;


y al contrario


if ListBox2.ItemIndex = -1 then
Showmessage('Debe seleccionar el item a cambiar')
else
begin
ListBox1.Items.Add(ListBox2.Items.string[ListBox2.ItemIndex]);
ListBox2.Items.Delete(ListBox2.ItemIndex);
end;

roman
06-07-2007, 22:23:08
Y para emular el MoveSelection, si no se cuenta con él:


procedure MoveSelection(Source, Dest: TListBox);
var
I: Integer;

begin
for I := Pred(Source.Count) downto 0 do
if Source.Selected[I] then
begin
Dest.Items.Add(Source.Items[I]);
Source.Items.Delete(I);
end;
end;


// Saludos

jhonny
06-07-2007, 22:38:30
Roman nos estamos quedando como dinosaurios :P


Sí, ya veo. Ni hablar, hay que dar paso a las nuevas generaciones


Jo jo jo, es un honor para mi que ustedes digan estas cosas, pero la verdad es que aunque tampoco conocía dicho método siento que conté con algo de suerte, ya que me dio por escribir Move (Ctrl + ESPACIO) y Eureca :D. Lo cierto es que todavía necesito leer mucho para podernos dar de a codazos... ;).

eduarcol
06-07-2007, 22:51:11
Bueno cuando te quieras dar de codazos avisa con tiempo para hacer ejercicios y no me duela tanto :P

UREÑA
09-07-2007, 16:49:35
gracias una vez mas me salvaron la vida quedo listo:D

un agradecimiento a todos los que me han ayudado por que todo lo poco que he aprendido es gracias a ustedes!! creo que no hay mejor manual que la practica y un buen foro como este

una vez mas gracias

nos vemos pronto:o