PDA

Ver la Versión Completa : TlistBox y su Itemindex ...


ingel
06-07-2012, 15:06:17
Buendia .. he visto que pasa algo similar a lo que me ocurre con el listview , pero no tienen iguales propiedades y la solucion que hay no me ha funcionado ..
El tema es el sig:
Cuando cargo el form , genero las opciones de un TListBos .. Si uso las FLECHAS de seleccion , su itemindex NO SE ACTUALIZA y SIEMPRE queda en -1 ... Tengo que clickear dentro del componente para que tome el foco y ahi si actualiza el valor itemindex... pero si sigo seleccionando con las flechas me conserva ESE valor sin actualizarlo nuevamente...
Y no puedo hacer algo como "TlistBox1.Selected.Focused := true; ".. para forzarlo ....
Sds a todos
y gracias por su tiempo..

Neftali [Germán.Estévez]
06-07-2012, 16:30:58
Cuando cargo el form , genero las opciones de un TListBos .. Si uso las FLECHAS de seleccion , su itemindex NO SE ACTUALIZA y SIEMPRE queda en -1 ... Tengo que clickear dentro del componente para que tome el foco y ahi si actualiza el valor itemindex... pero si sigo seleccionando con las flechas me conserva ESE valor sin actualizarlo nuevamente...
Y no puedo hacer algo como "TlistBox1.Selected.Focused := true; ".. para forzarlo ....
Sds a todos


Tal vez deberías colocar un pequeño ejemplo con el código que estás utilizando porque el comportamiento normal del TListBox no es el que describes. Es posible que yo no te esté entendiendo, de ahí que iría bien una aclaración.

Si subes y bajas con las flechas en el ListBox y en el evento OnKeyDown (por poner uno) colocas lo siguiente, verás que el ItemIndex sí cambia.


procedure TForm6.ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Label1.Caption := IntToStr(ListBox1.ItemIndex);
end;

ingel
06-07-2012, 16:47:35
es correcto lo que dices , si bajas con las flechas usando el teclado lo actualiza , pero el problema es cuando cambias las opciones con las flechas utilizando el mouse (omiti esa parte , porque como casi no uso el teclado , siempre las selecciones las hago con el mouse , lo di por default :-) .. perdon....) ..
Incluso veras que si estas en OTRO componente y CLICKEAS en las flechas para realizar una seleccion NO PASA EL FOCO al TListbox (queda en el otro componente , motivo por el cual estimo que no actualiza tampoco el itemindex)
.. Es un sistema que esta desarrollado en delphi5 .. ( aclaro por si hubiere algun bug en el componente corregido en versiones posteriores..)
Gracias

Neftali [Germán.Estévez]
06-07-2012, 17:15:10
pero el problema es cuando cambias las opciones con las flechas utilizando el mouse

No te entiendo.
¿Qué quieres decir con utilizar las flechas con el Mouse?

ingel
06-07-2012, 17:27:43
En el listbox cuando tienes varias opciones y el area que ocupa el componente es pequeña (com por ejemplo el tamaño de un Edit normal) aparecen dos flechas/botones a la derecha del componente para poder seleccionar las opciones .. si ESAS flechas las presiono con el mouse , las opciones cambian , pero el itemindex no se actualiza ...( y tampoco toma el foco) ..
Espero haberme explicado bien..
Muchas gracias por tu tiempo ...
Sds

Neftali [Germán.Estévez]
06-07-2012, 18:01:18
En el listbox cuando tienes varias opciones y el area que ocupa el componente es pequeña (com por ejemplo el tamaño de un Edit normal) aparecen dos flechas/botones a la derecha del componente para poder seleccionar las opciones .. si ESAS flechas las presiono con el mouse , las opciones cambian , pero el itemindex no se actualiza ...( y tampoco toma el foco) ..
Espero haberme explicado bien..
Sds

Si te refieres a estas 2 flechas que aparecen a la derecha:

http://img62.imageshack.us/img62/5637/imagen1247.png

La explicación es que esas flechas no son para mover el elemento del ListBox, que son las que corresponden al scrollbar vertical, por lo tanto es lógico que funcione como comentas, igual que si el componente tuviera un tamaño más grande.

http://img28.imageshack.us/img28/2158/imagen1248.png

ingel
08-07-2012, 00:34:21
como siempre lo dimensione como UN EDIT no me di cuenta de ello...
creo que debere buscar otro componente... Disculpas y Gracias
Sds