Ir al contenido


Foto

Ubicarse a un TListGroup específico de un TListView


Mejor respuesta enecumene , 18 julio 2017 - 08:00

Gracias, pero no me funcionó porque no se posiciona a ningún grupo, o sea, no hace scroll, tuve que dedicarme un tiempo a esto y descubrí que era sencillo, la idea era posicionarse en el primer item de un grupo, para eso tenía que obtener el ID del Grupo y buscar el primer item con ese grupo, algo así:


delphi
  1. procedure TFPermisos.GoToGroup(const AHeader: String; AList: TListView);
  2. var g,i: Integer;
  3. AIndex: Integer;
  4. begin
  5. for g := 0 to AList.Groups.Count -1 do begin
  6. if AList.Groups[g].Header = AHeader then begin
  7. AIndex := AList.Groups[g].GroupID;
  8.  
  9. for i := 0 to AList.Items.Count -1 do begin
  10. if AList.Items[i].GroupID = AIndex then begin
  11. AList.Items.Item[i].Focused;
  12. AList.Items.Item[i].MakeVisible(True);
  13. break;
  14. end;
  15. end;
  16.  
  17. Break; // SI encontró rompemos el ciclo
  18. end;
  19. end;
  20. end;

Y ya va funcionando..

Ir al mensaje completo


  • Por favor identifícate para responder
7 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2017 - 12:08

¿Alguien sabe cómo hacer ubicarse a un TListGroup Item específico de un TListView?, me explico, tengo un ListView con una cantidad de items (vamos a decir unos 100) de manera agrupada, quisiera buscar por el nombre del grupo (TListGroup) y ubicarse ahí, en vez de hacer Scroll, que se hace bastante tedioso para el usuario, la única función que vi es el Scrol(x,y), pero no me sirve porque debes conocer de antenamo la ubicación exacta, y no se puede porque la lista es dinámica, o sea, puede variar de posición, ¿es posible?.

 

Saludos.


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 julio 2017 - 04:42

¿No es posible lograr esto? :|


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 17 julio 2017 - 05:16

¿No es posible lograr esto? :|

 

Poder se debe poder, el punto es como hacerlo :D :D :D

 

Saludos


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 julio 2017 - 05:22

Ah qué alivio!, porque no he encontrado nada al respecto!, hablan mucho del uso del .Scroll(x,y), pero hay que saberlo la posición de antemano.


  • 0

#5 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 17 julio 2017 - 07:50

Puedes chequear la propiedad Header de los groups y compararla con la cadena a buscar:


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2.  
  3. var
  4.  
  5. cantgrupos,x:Integer;
  6. cadena:String;
  7. begin
  8. cadena:=Edit1.Text;
  9.  
  10. cantgrupos:=ListView1.Groups.Count;
  11. for x := 0 to cantgrupos - 1 do
  12. begin
  13. if (ListView1.Groups[x].Header = cadena) then
  14. begin
  15. ListView1.Groups[x].State:= [lgsSelected];
  16. end;
  17. end;
  18.  
  19. end;
  20.  
  21. end.


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 18 julio 2017 - 08:00   Mejor respuesta

Gracias, pero no me funcionó porque no se posiciona a ningún grupo, o sea, no hace scroll, tuve que dedicarme un tiempo a esto y descubrí que era sencillo, la idea era posicionarse en el primer item de un grupo, para eso tenía que obtener el ID del Grupo y buscar el primer item con ese grupo, algo así:


delphi
  1. procedure TFPermisos.GoToGroup(const AHeader: String; AList: TListView);
  2. var g,i: Integer;
  3. AIndex: Integer;
  4. begin
  5. for g := 0 to AList.Groups.Count -1 do begin
  6. if AList.Groups[g].Header = AHeader then begin
  7. AIndex := AList.Groups[g].GroupID;
  8.  
  9. for i := 0 to AList.Items.Count -1 do begin
  10. if AList.Items[i].GroupID = AIndex then begin
  11. AList.Items.Item[i].Focused;
  12. AList.Items.Item[i].MakeVisible(True);
  13. break;
  14. end;
  15. end;
  16.  
  17. Break; // SI encontró rompemos el ciclo
  18. end;
  19. end;
  20. end;

Y ya va funcionando..


  • 1

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 julio 2017 - 09:03

Poder se debe poder, el punto es como hacerlo :D :D :D


..... tuve que dedicarme un tiempo a esto y descubrí que era sencillo.....


Ya ve como si se podía!!!

Me alegra haber sido de ayuda :D :D :D  (h)
 
Saludos
  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 18 julio 2017 - 09:16

:p :D


  • 1




IP.Board spam blocked by CleanTalk.