2010-10-20 17 views
2

J'ai une TListBox sur un formulaire Windows avec 966 éléments. Lorsque je clique sur un bouton de mon formulaire, un sous-ensemble de ces chaînes est sélectionné (environ 200).Delphi TListBox débordement de contenu lors de la sélection (Win7, 32 bits, sur le thème)

Si je déconnecte maintenant mon application en cliquant quelque part dans la barre des tâches, les entrées de ma TListBox saignent vers le haut, de sorte qu'elles sont visibles au-dessus des limites de la TListBox. Ils saignent heureusement derrière le composant TGroupBox qui est directement au-dessus d'eux - cependant cela semble toujours extrêmement poli.

Je ne peux reproduire ceci que sur une machine Win 7 x64 utilisant le thème Aero (j'ai un autre ordinateur portable Win 7 x64 qui ne présente pas le même problème avec le même paramètre de thème).

J'ai essayé d'émettre un PostMessage (Self.Handle, WM_PAINT, 0, 0) directement après avoir changé l'état de sélection, précédé par un ListBox.Refresh. Cela n'aide pas.

Toute aide serait grandement appréciée. S'il vous plaît aviser si vous avez besoin de plus de détails.

Cheers, Duncan

+0

Je n'arrive pas à reproduire le problème sur Windows 7 64 bits, Delphi 2009. Êtes-vous sûr que cela est lié au grand nombre d'éléments de la liste? Essayez d'affiner le problème. Aussi: Qu'est-ce qu'un 'TSelectBox'? Je suppose que vous voulez dire un 'TListBox'. –

+0

@Andreas - Oui, désolé, je voulais dire TListBox. Je suis également incapable de reproduire cela sur un autre ordinateur. Les autres ordinateurs sur lesquels j'ai testé ont Aero, mais tous ont des cartes graphiques discrètes (l'ordinateur à problème utilise un adaptateur Intel intégré). – Duncan

+4

Ensuite, la première étape que je vais essayer est de mettre à jour le pilote graphique ... –

Répondre

-1

Utilisez-vous l'unité XPManifest, ou avez-vous permis thèmes pour votre application? Si c'est le cas, essayez de ne pas l'utiliser pour voir ce qui se passe. Cela peut être très mauvais si vous n'avez pas une bonne carte vidéo.

Mes 2 cents? Évitez d'utiliser des thèmes du tout. C'est simple ne fonctionne pas très bien.

+0

-1 Ce n'est pas * votre * choix de ne pas utiliser de thèmes. C'est la personne sur laquelle votre application fonctionne. Deuxièmement, l'OP a déjà dit qu'Aero était utilisé et qu'un test a été effectué avec Aero sur une autre machine qui n'a pas montré le problème. –

+0

@Ken White Je ne suis pas d'accord avec vous. C'est mon choix de ne pas utiliser de thèmes parce que je suis le développeur d'applications et je sais ce qui fonctionne et ce qui ne fonctionne pas. Dans mon cas, j'aime utiliser la bibliothèque de skins DevExpress et éviter l'unité de thème delphi buggé. Et comme je l'ai déjà dit (et je peux voir que vous ne l'avez pas lu), les thèmes peuvent être très mauvais si vous n'avez pas une bonne carte vidéo. Il a essayé sur un autre ordinateur, oui, mais il a la même carte vidéo? C'est le même ordinateur? –

+0

@Ken White Et ce que je veux dire quand je dis "Évitez d'utiliser des thèmes du tout", est "N'utilise pas du tout l'unité thématique de Delphi". Vous pouvez toutes les autres bonnes solutions, comme DevExpress a. –