Jump to content


Photo

Ubicarse a un TListGroup específico de un TListView


Best Answer enecumene , 18 July 2017 - 08:00 AM

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..

Go to the full post


  • Please log in to reply
7 replies to this topic

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 13 July 2017 - 12:08 PM

¿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
  • 7419 posts
  • LocationRepública Dominicana

Posted 17 July 2017 - 04:42 PM

¿No es posible lograr esto? :|


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14466 posts
  • LocationMéxico

Posted 17 July 2017 - 05:16 PM

¿No es posible lograr esto? :|

 

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

 

Saludos


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 17 July 2017 - 05:22 PM

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 posts

Posted 17 July 2017 - 07:50 PM

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
  • 7419 posts
  • LocationRepública Dominicana

Posted 18 July 2017 - 08:00 AM   Best Answer

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
  • 14466 posts
  • LocationMéxico

Posted 18 July 2017 - 09:03 AM

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
  • 7419 posts
  • LocationRepública Dominicana

Posted 18 July 2017 - 09:16 AM

:p :D


  • 1




IP.Board spam blocked by CleanTalk.