Jump to content


Photo

[RESUELTO] seleccionar item de un ListBox por código


  • Please log in to reply
14 replies to this topic

#1 argu34

argu34

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 29 October 2009 - 10:58 AM

:( Saludos, soy nuevo en la comunidad, tengo un problema con la selección de un listbox.item  mediante código,  que al cambiar el item lo haga una solo vez, ya que a mi me cambia desde el primero hasta el último sin parar.

Yo uso el código:
Listbox1.itemIndex:=Listbox1.itemIndex+1; //???

Gracias.
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 29 October 2009 - 11:10 AM

Hola, bienvenido a esta comunidad donde esperamos porder ayudarte.

Podrias decirnos en que evento tienes ese codigo?? y exactamente cuando quieres que el listbox cambie de valor?
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 29 October 2009 - 11:12 AM

Pues a mi me funciona perfecto, definiendo en el OnShow del Form esto:




delphi
  1. listbox1.ItemIndex := 0;




y en el OnClick de un botón, esto:




delphi
  1. listbox1.ItemIndex := listbox1.ItemIndex+1;
  2. label25.Caption := listbox1.Items[listbox1.ItemIndex];



Nos podrías dar más información de en qué evento definiste tu código ?

Saludox ! :D

P.D. Bienvenido a DelphiAccess !!!!

  • 0

#4 argu34

argu34

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 29 October 2009 - 11:23 AM

En mi caso estoy programando y disculpen lo sencillo del caso, un preproductor de sonidos mp3 y más. El código se los pongo y por favor no se fijen en el desorden



delphi
  1. procedure TPlayer.Sound1TimeChanging(Sender: TObject; Time: Integer);
  2. begin
  3.  
  4. //********************************
  5. Progressbar1.Max:=Sound1.GetTimeLength ;
  6. Progressbar1.position:=Sound1.GetCurrentTimePos;
  7. //Sound1.GetProgress;
  8. //********************************
  9. if listbox1.ItemIndex=-1 then
  10.   listbox1.ItemIndex:=0;
  11. Sound1.GetCurrentTimePos;
  12. Label2.Caption:=intToStr(Sound1.GetCurrentTimePos);
  13. Label3.Caption:=intToStr(Sound1.GetTimeLength);
  14. if sound1.GetCurrentTimePos=Sound1.GetTimeLength then
  15. sound1.Play(listbox1.Items[ListBox1.ItemIndex+1]);
  16. label4.Caption:=intToStr(listbox1.ItemIndex);
  17. { falta que el listbox cambie el foco al finalizar cada tema ya que
  18. el tema músical cambia bien}
  19. //
  20. end;
  21. // según creo el evento es cuando el tiempo transcurre se ejecutan cada una de las condiciones.
  22. // Sound es un componente gratis  que reproduce varios formatos ya que tiene un dll , puede según el código hasta reproducir desde la red.



Gracias por la atención.
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 29 October 2009 - 11:29 AM

No te hace falta un begin y un end ????  ^o|

Aquí :



delphi
  1. procedure TPlayer.Sound1TimeChanging(Sender: TObject; Time: Integer);
  2. begin
  3.  
  4. //********************************
  5. Progressbar1.Max:=Sound1.GetTimeLength ;
  6. Progressbar1.position:=Sound1.GetCurrentTimePos;
  7. //Sound1.GetProgress;
  8. //********************************
  9. if listbox1.ItemIndex=-1 then
  10.   listbox1.ItemIndex:=0;
  11. Sound1.GetCurrentTimePos;
  12. Label2.Caption:=intToStr(Sound1.GetCurrentTimePos);
  13. Label3.Caption:=intToStr(Sound1.GetTimeLength);
  14. if sound1.GetCurrentTimePos=Sound1.GetTimeLength then
  15. begin                                                                        // AQUI !!!!
  16.   sound1.Play(listbox1.Items[ListBox1.ItemIndex+1]);
  17.   label4.Caption:=intToStr(listbox1.ItemIndex);
  18. end;                                                                          // Y AQUI !!!!
  19. { falta que el listbox cambie el foco al finalizar cada tema ya que
  20. el tema músical cambia bien}
  21. //
  22. end;
  23. // según creo el evento es cuando el tiempo transcurre se ejecutan cada una de las condiciones.
  24. // Sound es un componente gratis  que reproduce varios formatos ya que tiene un dll , puede según el código hasta reproducir desde la red.



Saludox ! :D


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 29 October 2009 - 11:34 AM

Prueba con:



delphi
  1. ListBox1.Selected[ListBox1.ItemIndex+1];



Saludos.
  • 0

#7 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 29 October 2009 - 11:36 AM

Ah y ya vi otro detalle... jejeje, prueba con:



delphi
  1. label4.Caption := listbox1.Items[listbox1.ItemIndex];



Saludox ! :D
  • 0

#8 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 29 October 2009 - 11:41 AM

Por cierto, moveré este hilo a un lugar más adecuado :) (y)

Saludox ! :D
  • 0

#9 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4107 posts
  • LocationMadrid - España

Posted 29 October 2009 - 11:45 AM

:( Saludos, soy nuevo en la comunidad, tengo un problema con la selección de un listbox.item  mediante código,  que al cambiar el item lo haga una solo vez, ya que a mi me cambia desde el primero hasta el último sin parar.

Yo uso el código:
Listbox1.itemIndex:=Listbox1.itemIndex+1; //???

Gracias.


Bienvenido, argu34. Espero que te sientas bien entre nosotros.

Según entiendo, la canción suena pero el item seleccionado avanza aunque la canción no haya terminado, por lo que corre hasta el final. Si es así, se debe a que pones en marcha la canción, la dll que usas posiblemente utiliza un thread y la canción empieza a sonar pero tu código continua hasta el final por lo que los items corren. Debes controlar un evento que se dispare al terminar la canción, para poner en él el código que haga avanzar el item sólo si la canción terminó de sonar.

Si es este tu caso, imagino que encontrarás la información suficiente en la documentación que acompañará a tu dll.

Saludos.
  • 0

#10 argu34

argu34

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 29 October 2009 - 12:00 PM

:smiley: Muchas gracias Fenareth en verdad era que faltaban dos    begin y end.

casi siempre el vago trabaja doble.
Gracias!!!


  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 29 October 2009 - 12:08 PM

:smiley: Muchas gracias Fenareth en verdad era que faltaban dos    begin y end.

casi siempre el vago trabaja doble.
Gracias!!!


Bienvenido a la Comunidad DelphiAccess argu34.

Me alegra que se haya solucionado su problema. Voy a editar este tema para colocarle el status de [RESUELTO].

Salud OS
  • 0

#12 argu34

argu34

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 29 October 2009 - 12:21 PM


Tengo que darles las gracias a todos los que me han atendido, pues no en todos los foros se coopera tan rápido .

De ahora en adelante, también yo trataré de ayudar a otros, aquí en está comunidad.
  • 0

#13 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 29 October 2009 - 12:31 PM


Tengo que darles las gracias a todos los que me han atendido, pues no en todos los foros se coopera tan rápido .

De ahora en adelante, también yo trataré de ayudar a otros, aquí en está comunidad.


Será de verdad placentero compañero contar con tus aportaciones. Te comento que no solo puedes postear hilos de ayuda. Puedes crear temas en la taberna para esparcimiento de la comunidad y liberar un poco de estres. Además puedes subir tus utilerias en la sección de recursos y puedes también colaborar con tus trucos en la sección dedicada a ello.

Bienvenido  a esta nuestra comunidad.  :D

Saludos cordiales.
  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 29 October 2009 - 12:32 PM


Tengo que darles las gracias a todos los que me han atendido, pues no en todos los foros se coopera tan rápido .

De ahora en adelante, también yo trataré de ayudar a otros, aquí en está comunidad.


Sientete en casa y libre de participar. (y)

Salud OS
  • 0

#15 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 02 November 2009 - 09:09 AM

Otra forma de hacerlo por código es el siguiente:



delphi
  1. ListBox1.Perform(lb_SetTopIndex,ListBox1.Items[Listbox1.ItemIndex+1], 0);



Saludos.
  • 0




IP.Board spam blocked by CleanTalk.