Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   de un list a otro?? (https://www.clubdelphi.com/foros/showthread.php?t=45558)

UREÑA 06-07-2007 21:16:35

de un list a otro??
 
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

Código Delphi [-]
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

Código Delphi [-]
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:
Código Delphi [-]
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'

Código SQL [-]
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
Código SQL [-]
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
Código Delphi [-]
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

Código Delphi [-]
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:

Código Delphi [-]
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

Cita:

Empezado por eduarcol
Roman nos estamos quedando como dinosaurios :P

Cita:

Empezado por roman
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


La franja horaria es GMT +2. Ahora son las 20:26:59.

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