Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Autoseleccion en Tlistbox - Delphi 7 - (https://www.clubdelphi.com/foros/showthread.php?t=96666)

ArtPortEsp 08-04-2024 20:16:04

Autoseleccion en Tlistbox - Delphi 7 -
 
Hola a todos;

necesito hacer una autoseleccion de los items de un ListBox conforme se vayan agregando nuevos, no encuentro como hacerlo, alguna sugerencia?

Saludos y gracias anticipadas

duilioisola 08-04-2024 20:23:46

No entiendo bien qué es lo que quieres, pero para seleccionar un item, está la propiedad ItemIndex.
Supongo que después de agregarlo a Items deberás buscar la posición en la que se ha agregado y asignarla a ItemIndex

Código Delphi [-]
with Listbox1 do
begin
  // Se agrega un nuevo elemento
  Items.Add('Prueba');

  // Asigno la cantidad de elementos -1 como ItemIndex, porque el índice empieza en 0.
  ItemIndex := Items.Count -1;
end;

Neftali [Germán.Estévez] 09-04-2024 10:43:59

Cita:

Empezado por ArtPortEsp (Mensaje 555263)
necesito hacer una autoseleccion de los items de un ListBox conforme se vayan agregando nuevos, no encuentro como hacerlo, alguna sugerencia?

En versiones nueva hay un SelectAll (si es que necesitas multiselección).

Código Delphi [-]
uses
  System.DateUtils;

procedure TForm3.Button1Click(Sender: TObject);
begin
  // rellenar klos meses del año
  for var i := 1 to 12 do
    ListBox1.Items.Add(FormatDateTime('mmmm', EncodeDate(YearOf(Now), i, 1)));
  // Seleccionar todos
  ListBox1.MultiSelect := True;
  ListBox1.SelectAll;
end;

ArtPortEsp 09-04-2024 13:13:44

Voy a tratar de explicarme un poco mas:

Código Delphi [-]
     for x:=0 to Archivos.Items.Count-1 do
          Archivos.Selected[x] := cbseleccionar.checked;

Con un listbox y un checkbox consigo "seleccionar" todos los items... hasta aquí todo normal....

Pero quisiera implementar un método que, si agrego nuevos items al listbox en donde ya están seleccionados todos, los nuevos elementos aparezcan también seleccionados.

Aunque es muy sencillo seleccionar y quitar la seleccion a los items con el checkbox, los usuarios no quieren "molestarse" en hacer dos click para seleccionar los items que se agregan. :mad:

Neftali [Germán.Estévez] 09-04-2024 16:49:10

Cita:

Empezado por ArtPortEsp (Mensaje 555283)
...quisiera implementar un método que, si agrego nuevos items al listbox en donde ya están seleccionados todos, los nuevos elementos aparezcan también seleccionados.


Código Delphi [-]
ListBox1.SelectAll;

ArtPortEsp 09-04-2024 19:06:39

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555292)
Código Delphi [-]
ListBox1.SelectAll;

¿En que evento lo invocarías?... suponiendo que ya tienes items seleccionados y agregas más.

duilioisola 09-04-2024 19:40:35

Me quedan dudas...
¿Hay algunos seleccionados y otros no?
¿Hay que marcarlo como seleccionado cuando al menos haya uno seleccinoado?
¿Hay que marcarlo como seleccionado cuando todos estén seleccinoados?

En cualquier caso, debes tener una función que agrega el item a la lista... allí es donde debes implementar la selección.

Por ejemplo,

Código Delphi [-]
procedure AgregarFichero(Fichero:string);
begin
  // Agrego Item
  Archivos.Items.Add(Fichero);

  // Marco todo como seleccionado
  Archivos.Items.SelectAll;
end;

o

Código Delphi [-]
procedure AgregarFichero(Fichero:string);
var 
  x : integer;
begin
  // Agrego Item
  Archivos.Items.Add(Fichero);

  // Marco los items segun cbseleccionar
  for x:=0 to Archivos.Items.Count-1 do
    Archivos.Selected[x] := cbseleccionar.checked;
end;

o

Código Delphi [-]
procedure AgregarFichero(Fichero:string);
var 
  x : integer;
  HayAlgunArchivoSeleccionado : boolean;
begin
  // Agrego Item
  Archivos.Items.Add(Fichero);

  // Si hay por lo menos uno seleccionado, selecciono el fichero insertado
  HayAlgunArchivoSeleccionado := False;
  for x:=0 to Archivos.Items.Count-1 do
    if Archivos.Selected[x] then
      HayAlgunArchivoSeleccionado := True;

  if HayAlgunArchivoSeleccionado then
  begin
    for x:=0 to Archivos.Items.Count-1 do
      if (Archivos.Items[x] = Fichero) then
        Archivos.Selected[x] := True;
  end;
end;

ArtPortEsp 09-04-2024 19:56:39

Tan obvio como sencillo, de verdad que uno se ofusca tratando de encontrar el "hilo negro"... Disculpen por tomar su tiempo en algo que ahora me parece tan tonto por no haberlo visto.

Gracias por su ayuda amigos

Neftali [Germán.Estévez] 09-04-2024 21:16:02

Cita:

Empezado por ArtPortEsp (Mensaje 555297)
¿En que evento lo invocarías?... suponiendo que ya tienes items seleccionados y agregas más.


En ningún evento, llámado después de agregar los nuevos elementos.


La franja horaria es GMT +2. Ahora son las 00:53:26.

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