2010-05-04 10 views
0

Je crée un composant qui utilise des éléments de collection et de collection de panneaux.Propriétés de composant fonctionnant au moment du design mais pas au moment de l'exécution

Je n'arrive pas à faire fonctionner les couleurs au moment de l'exécution, mais elles semblent fonctionner correctement au moment du design.

Vous pouvez télécharger le code source de composants ici:

http://www.shaneholmes.net/pasfiles/

Il y a une propriété consoles (TCollection), propriété couleurs d'état, et un mode d'édition propriété

Chaque console (TCollectionItem) a une propriété status lorsqu'elle est modifiée, la propriété consoles est modifiée en fonction de la propriété StatusColors des composants. Lorsque la propriété EditMode des composants est définie sur true, vous pouvez déplacer les panneaux lors de l'exécution.

Question: Pourquoi les couleurs ne fonctionnent-elles qu'au moment de la conception et non au moment de l'exécution?

grâce

+0

Pouvez-vous écrire un petit projet de test pour montrer le problème? De préférence, celui qui ne nécessite pas l'installation de votre composant - ne devrait pas importer que le problème se produit à l'exécution. –

Répondre

1

Je n'ai pas regardé votre code, mais « panneaux » + « couleurs ne fonctionne pas » sonne comme si vous avez oublié de mettre ParentBackground sur False.

Je suppose que les couleurs fonctionnent probablement au moment de la conception, car vous avez activé le thème en utilisant XPMan et non en cochant la case "Activer les thèmes d'exécution" dans les options du projet. (La seconde option n'est disponible que si vous avez D2007 ou plus tard.)

+0

Non, je n'ai pas activé Theming .... et j'ai essayé de définir ParentBackground = false et il n'a pas changé les résultats – JakeSays

+0

Je viens de construire une petite application dans D2006 et obtenir TConsole couleur si l'application n'est pas sur le thème. Dès que j'ajoute XPMan au projet, les consoles créées sont grises. Ajouter 'ParentBackGround: = False;' à 'TConsoleControl.Create' résout cela. Donc je conteste ton commentaire. :-) –

+0

Vous ne savez pas ce que TConsoleControl est, mais je suppose que vous faites référence à TConsolePanel. J'ai ajouté ParentBackground = False avant que j'ai posté cette question, mais je suis retourné et ai essayé encore pour être sûr que je n'ai pas fait une erreur. Je n'ai toujours pas les panneaux colorés. Je n'utilise pas D2006, j'utilise Delphi 2010. constructeur TConsolePanel.Create (AOwner: TComponent); begin inherited Créer (AOwner); ParentBackground: = False; ... end; – JakeSays

Questions connexes