PDA

Ver la Versión Completa : Sincronizar 2 TlistBox. en diferentes Forms


JXJ
10-08-2005, 01:29:41
Tengo un Tlistbox en una forma, y otr en otra forma.
lo que quiero es que cuando. se modique el contenido de un
listbox, este se refleje actualizandose el otro listbox

En trucomania hay un codigo pero es para listbox que estan en la
misma forma, todavia no logro hacerlo funcionar para mi proposito

gracias. :)

vtdeleon
10-08-2005, 04:17:29
Saludos
Cual es el truco? Pon el codigo o el enlace.

Pienso que serai facil si ya el truco lo hace en el mismo form, solo hay que referenciarle el otro form a uno de los listbox. por Ej:
//Mismo form
Listbox1.items:=Listbox2.items;
//Diferente form
Listbox1.items:=Form2.Listbox.Items;Un ejemplo, algo vago:P

JXJ
11-08-2005, 05:55:23
no logro aún acerlo funcionar.
me dice que
left side cannot be assigned to

me extraña que no acepte esta declaración.

//Antes
listbox1.items.clear;
//Despues
ListBox1.Items.Clear := formMenuPrincipal.ListBox1.Items.Clear;
//Antes
listbox1.items.append(nick[a]);
//Despues
ListBox1.Items.Append(nick[a]):= formMenuPrincipal.ListBox1.Items.Append(nick[a]);

Lepe
11-08-2005, 12:02:53
Si miras la declaración de Clear, verás que es un procedimiento, por tanto, no se le puede asignar nada:

Te propongo algo distinto, tenemos el combo1 y el combo2 que queremos sincronizar:


procedure Sincroniza(LeerDe:TCombobox; ModificarEl:TComboBox);
begin
ModificarEl.items.Assign(leerDe.Items);
ModificarEl.Itemindex := LeerDe.itemindex;
end;


Cuando modifiques uno de los combos, solo tienes que llamar a esta rutina de tal forma que si modifico el combo1 :

Sincroniza(combo1, combo2);

Si es al contrario, cambias los parámetros de sitio y listo.

Se supone que tienes botones para añadir/borrar elementos de ambos combos, ese es el lugar idóneo para llamar a Sincroniza.

Si son pocos elementos, esta rutina va de maravilla, si son muchos, sería mejor identificar que cambio exacto se hace y eliminar / añadir el elemento exacto.

Un saludo