16 de abril de 2007

¿Cuál es el ancho de una lista en un combo?

Artículo original: What’s the width of a combo list
http://www.foxpert.com/knowlbits_200703_3.htm
Autor: Christof Wollenhaupt
Traducido por: Ana María Bisbé York


Si tiene un combobox para el que no ha especificado un valor de la propiedad ColumnWidths, Visual FoxPro tiene que calcular por si mismo cuál podría ser el ancho de la columna desplegada. Básicamente, Visual FoxPro simplemente crea la lista con el ancho suficiente para mostrar completamente todos los valores. Sin embargo, Visual FoxPro solamente toma parte de la lista para determinar el ancho real de cada línea. El siguiente código de ejemplo demuestra este comportamiento:
Public goForm, gaData[121]
goForm = CreateObject("Form")
goForm.Show()
For lnRow=1 to 120
  gaData[lnRow] = "_"+Transform(m.lnrow)
EndFor
gaData[121] = "AAAAAAAAAAAAAAA*"
* first combo
goForm.AddObject("c1","combobox")
goForm.c1.RowSource = "gaData"
goForm.c1.RowSourceType = 5
goForm.c1.ListIndex = 1
goForm.c1.Visible = .T.
* second combo
goForm.AddObject("c2","combobox")
goForm.c2.RowSource = "gaData"
goForm.c2.RowSourceType = 5
goForm.c2.ListIndex = 100
goForm.c2.Top = 50
goForm.c2.Visible = .T.
Ambos comboboxes están configurados con idéntico origen (RowSource). La única diferencia entre los dos, es el elemento actualmente seleccionado. El primer combo muestra el primer elemento, el segundo muestra un elemento que está cercano del final. Si abre ahora ambos comboboxes, verá que el primero es más estrecho y no mostrará el último elemento en toda su longitud.

VFP utiliza el elemento actual y luego lee una cantidad variable de líneas. En el ejemplo de arriba siempre es 68 en mi PC. Esto es, con un ListIndex de 53, el combobox se comporta como el primero, con un ListIndex de 54 se muestra como el segundo. En otros casos, encontré que la cantidad de líneas puede ser mucho más que 10, poniendo la línea grande fuera del área visible de las 7 líneas que muestra de forma predeterminada.

No hay comentarios. :

Publicar un comentario