39 votes

Firemonkey ScrollBox Bug

Nous sommes victimes de ce qui semble être un bug étrange dans Firemonkey est ScrollBox composant (puisqu' TGrid hérite TScrollBox il affecte également toutes les grilles). Sur certains ouf nos machines de développement, tout fonctionne bien, alors que sur d'autres, le bug se produit. Nous n'avons pas réussi à détecter une tendance entre les systèmes (nous avons vérifié OS, matériel graphique, la version de DirectX).

Reproduction:

  1. Créer une nouvelle application FireMonkey. Placez un TScrollBox sur le formulaire.
  2. Ajouter un bouton à la scrollBox et de définir sa position verticale à 500000.
  3. Démarrez l'application et vérifiez si le bouton s'affiche lorsque vous faites défiler jusqu'à la fin de la scrollbox.

Si le bug se produit, le bouton n'est pas visible.

Lors de l'utilisation d'une grille, ce qui conduit à des lignes 1-19047 affiché correctement et toutes les lignes de 19047 et ci-dessus ne s'affiche pas.

Personne n'a une idée de ce que pourrait être la cause? Ou une idée de comment nous pouvons identifier le problème plus en détail?

2voto

Peter Points 832

Après avoir toutes sortes de problèmes avec le défilement, j'en suis venu à la conclusion qu'il y a une phase d'initialisation problème avec défilement de composants firemonkey, qui se manifeste dans de douteux défilement comportement. Parfois ça fonctionne et parfois, il ne sera pas...

Après avoir pensé que j'ai résolu le problème plusieurs fois, suffit de regarder le problème réapparaît à la suite de la compilation (ou un autre OS), j'ai eu beaucoup de succès dans l'appel de la composante du UpdateStyle méthode après l'ajout de tous les composants enfants. I. e. le problème n'a pas refait surface depuis l'ajout de l'appel...

E. g. Le pseudo-code suivant remplit un composant, puis faire défiler les appels UpdateStyle qui semble forcer le composant "réparer" non valides paramètres pour différentes propriétés - Min, Max, etc.

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

Espérons que cela fonctionne pour vous aussi...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X