Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema al comparar y seleccionar Listbox (https://www.clubdelphi.com/foros/showthread.php?t=77013)

javier.m866 12-12-2011 23:11:03

listbox (itemindex)
 
Hola, tengo 4 listbox y quisiera que al dar clic sobre uno de los item del listbox1, se marque el mismo item en los listbox restantes, por ejemplo si hago clic en el 2do item del listbox1, quiero que se seleccionen todo los segundos items de los otros listbox. ¿Gracias de antemano?

ecfisa 13-12-2011 00:25:24

Hola Javier.

Agrega este código al evento OnClick del primer TComboBox.
Código Delphi [-]
procedure TForm1.ComboBoxClick(Sender: TObject);
begin
  with (Sender as TComboBox) do
  begin
    ComboBox1.ItemIndex:= ItemIndex;
    ComboBox2.ItemIndex:= ItemIndex;
    ComboBox3.ItemIndex:= ItemIndex;
    ComboBox4.ItemIndex:= ItemIndex;
  end;
end;
Si deseas que todos estén sincronizados agregalo al evento OnClick de los cuatro TComboBox.

Saludos.

javier.m866 13-12-2011 14:39:59

No son Combobox
 
No son Combobox, son ListBox lo que hice fuué sustituir el código para los ListBox Ejemplo:
with (Sender as ListBox) do
begin
ListBox1.ItemIndex:= ItemIndex;
ListBox2.ItemIndex:= ItemIndex;
ListBox3.ItemIndex:= ItemIndex;
ListBox4.ItemIndex:= ItemIndex;
end;
Pero me sale el siguiente error
[Error] Unit1.pas(46): Undeclared identifier: 'ListBox'

javier.m866 13-12-2011 14:45:54

Problema resuelto
 
Ya está resuelto, gracias. Sólo tenía que poner lo siguiente:
with (Sender as TListBox) do
begin
ListBox1.ItemIndex:= ItemIndex;
ListBox2.ItemIndex:= ItemIndex;
ListBox3.ItemIndex:= ItemIndex;
ListBox4.ItemIndex:= ItemIndex;
end;
Tal y cómo lo habías dicho. Muchas gracias, ahora intentaré eliminar algún item, espero que se eliminen de igual forma. Muchas gracias por su ayuda.

javier.m866 13-12-2011 19:46:17

Comparar y seleccionar items
 
Tengo 2 ListBox el Listbox1 cuenta con varios items y el listbox2 también, lo que necesito es que cuando el listbox2 tenga un items seleccionado (marcado en azul) revise si el listbox1 tiene un items igual (con el mismo texto) y de ser así entonces que seleccione ese items del listbox1 (o sea que lleve el listbox1 a la posición del items igual al del listbox2 y lo seleccione)

Muchas gracias de antemano

roman 13-12-2011 20:05:37

Pues tú mismo estás dando el algoritmo. Básicamente sería así:

1. Usas el evento OnClick del ListBox2 para detectar cuándo cambia el item seleccionado.
2. En este evento recorres la lista de ítemes del ListBox1 comparando cada uno con el que tienes seleccionado en el otro ListBox. Los elemento de un listbox los accedes mediante la propiedad Items y el índice del elemento seleccionado lo tienes en la propiedad ItemIndex.
3. Si en el recorrido anterior, encuentras una coincidencia, seleccionas el elemento mediante la propiedad Selected del ListBox1 (es un arreglo). En caso contrario lo marcas como deseleccionado (Selected = false) para borrar cualquier posible selección anterior.

Nota: El listbox1 debe tener activada la opción multiselect para el caso en que haya varias coincidencias de un mismo elemento del Listbox2.

// Saludos

javier.m866 13-12-2011 20:13:54

Gracias por la explicación
 
He comprendido el funcionamiento lógico, lo que sucede es que no sé cómo escribir los códigos para que funcione. Podrías ayudarme en esto. Salu2
Por ejemplo, ¿cómo escribo (recorrer la lista del listbox1 para ver si hay coincidencia con el elemento seleccionado en el listbox2)?
De haber coincidencia ¿cómo le digo al listbox1 que seleccione ese items?

Nuevamente gracias.

javier.m866 13-12-2011 22:23:35

Problema al comparar y seleccionar Listbox
 
Tengo 2 ListBox el Listbox1 cuenta con varios items y el listbox2 también, lo que necesito es que cuando el listbox2 tenga un items seleccionado (marcado en azul) revise si el listbox1 tiene un items igual (con el mismo texto) y de ser así entonces que seleccione ese items del listbox1 (o sea que lleve el listbox1 a la posición del items igual al del listbox2 y lo seleccione)

Muchas gracias de antemano

Neftali [Germán.Estévez] 14-12-2011 10:33:48

¿Y cual es el problema?
¿No te sale? ¿No sabes cómo hacerlo?

El en evento OnChange del dos, quédate con el texto seleccionado (ItemIndex) y haz una búsqueda en el primero (IndexOf). Si lo encuentras, lo seleccionas.

ecfisa 14-12-2011 12:39:18

Hola Javier.

Cita:

No son Combobox, son ListBox
Tenés razón me confundí :o, pero el funcionamiento, en este caso, es idéntico para ambos componentes.

Cuando agregues código, para dar más legibilidad, usá las etiquetas (TAG's):



Saludos.

ecfisa 14-12-2011 13:29:48

Cita:

Empezado por javier.m866 (Mensaje 421065)
He comprendido el funcionamiento lógico, lo que sucede es que no sé cómo escribir los códigos para que funcione. Podrías ayudarme en esto. Salu2
Por ejemplo, ¿cómo escribo (recorrer la lista del listbox1 para ver si hay coincidencia con el elemento seleccionado en el listbox2)?
De haber coincidencia ¿cómo le digo al listbox1 que seleccione ese items?

Una forma puede ser:
Código Delphi [-]
procedure TForm1.ListBox2Click(Sender: TObject);
begin
  if ListBox1.Items.IndexOf(ListBox2.Items[ListBox2.ItemIndex]) <> -1 then
    ListBox1.ItemIndex:= ListBox1.Items.IndexOf(ListBox2.Items[ListBox2.ItemIndex]);
end;

Saludos.

olbeup 14-12-2011 14:20:29

Esto no es lo mismo que esto :eek:

Cómo dice Neftali, ¿Cual es el problema? :mad:

Un saludo.

javier.m866 14-12-2011 14:22:44

Muchísimas gracias
 
De todo corazón les agradezco la ayuda, de verdad que ustedes son los mejores. Siempre me asombra la gran disposición que tienen para ayudar a otros a resolver sus problemas, en nombre de todos los veneficiados con sus consejos les reitero las gracias. (de un Cubano muy contento con ustedes)

ecfisa 14-12-2011 14:44:32

Hola Javier.

Combiné ambos temas ya que como comenta olbeup, habías creado dos hilos con el mismo contenido.

Por favor trata de no crear nuevos hilos con el mismo contenido. Si no contestan tu consulta o no entiendes algo, es preferible agregar un mensaje al hilo original y este automáticamente pasará a la cabecera de la lista de mensajes.

Un saludo.

roman 14-12-2011 18:02:05

Yo estoy confundido. No me parece que ambos temas tengan el mismo contenido. Uno hablaba de seleccionar los ítems de listboxes con el mismo índice que el de otro listbox, mientras que el otro tema hablaba de seleccionar los ítems de listboxes con el mismo texto que el de otro listbox.

// Saludos


La franja horaria es GMT +2. Ahora son las 06:35:09.

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