delphi delphi-xe2 firemonkey

delphi - Firemonkey ScrollBox Bug



delphi-xe2 (1)

Después de tener todo tipo de problemas con el desplazamiento, he llegado a la conclusión de que hay un problema de inicialización con los componentes de desplazamiento en firemonkey, que se manifiestan en el comportamiento de desplazamiento poco fiable. Algunas veces funcionará y otras no ...

Después de haber pensado que solucioné el problema varias veces, solo para ver el problema reaparecer en una compilación posterior (o en un sistema operativo diferente), tuve mucho éxito al llamar al método UpdateStyle del componente después de agregar todos los componentes secundarios. Es decir, el problema no ha resurgido desde que se agregó la llamada ...

Por ejemplo, el siguiente pseudo código rellena un componente de desplazamiento y luego llama a UpdateStyle, que parece forzar al componente a ''corregir'' las configuraciones no válidas para varias propiedades: Min, Max, etc.

for i := 1 to x do MyScrollComponent.AddObject(MyObject[i]); MyScrollComponent.UpdateStyle;

Espero que esto funcione para usted también...

Estamos experimentando lo que parece ser un error extraño en el componente ScrollBox de Firemonkey (ya que TGrid hereda de TScrollBox también afecta a todas las cuadrículas). En algunas de nuestras máquinas de desarrollo, todo funciona bien, mientras que en otros el error ocurre. No pudimos detectar ningún patrón entre los sistemas (comprobamos el sistema operativo, el hardware de gráficos, la versión de DirectX).

Reproducción:

  1. Crea una nueva aplicación FireMonkey. Coloque un TScrollBox en el formulario.
  2. Agregue un botón a scrollBox y establezca su posición vertical en 500000.
  3. Inicie la aplicación y compruebe si se muestra el botón cuando se desplaza hasta el final del cuadro de desplazamiento.

Si se produce el error, el botón no está visible.

Cuando se usa una grilla, esto conduce a que las líneas 1-19047 se muestren correctamente y no se muestren todas las líneas desde 19047 y superiores.

¿Alguien tiene idea de lo que podría estar causando esto? ¿O alguna idea de cómo podemos identificar el problema con más detalle?