Ir al contenido


Foto

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


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

#1 argu34

argu34

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 29 octubre 2009 - 10:58

:( 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
  • 4.483 mensajes
  • LocationVenezuela

Escrito 29 octubre 2009 - 11:10

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
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 octubre 2009 - 11:12

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 mensajes

Escrito 29 octubre 2009 - 11:23

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
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 octubre 2009 - 11:29

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
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 29 octubre 2009 - 11:34

Prueba con:



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



Saludos.
  • 0

#7 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 octubre 2009 - 11:36

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
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 octubre 2009 - 11:41

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

Saludox ! :D
  • 0

#9 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 29 octubre 2009 - 11:45

:( 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 mensajes

Escrito 29 octubre 2009 - 12:00

: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
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 octubre 2009 - 12:08

: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 mensajes

Escrito 29 octubre 2009 - 12:21


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
  • 4.945 mensajes
  • LocationMéxico

Escrito 29 octubre 2009 - 12:31


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
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 octubre 2009 - 12:32


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
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 02 noviembre 2009 - 09:09

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.