J'ai appris Delphi ces 3 dernières années, à un niveau de passe-temps/professionnel. Je suis heureux de dire que j'ai maintenant progressé au point que je peux revenir sur mon premier code avec horreur et embarras. Donc, je suis en train de passer en revue certaines de mes premières applications et de les réécrire/refactoriser.Utilisation de cadres en Delphi pour cacher des informations GUI
L'une des mauvaises habitudes que j'essaie d'éviter est l'accès aux composants d'un formulaire à partir d'une autre unité. Dans un effort pour faire respecter cela, j'ai expérimenté l'utilisation de cadres comme une méthode de dissimulation de l'information. Ainsi, au lieu d'avoir une forme avec des composants sur, je suis en train de créer un cadre pour contenir tous les éléments de formulaire, puis en plaçant le cadre sur une forme, le déplacement de la déclaration de cadre dans les déclarations privées,
type
TMyForm = class(TForm)
private
MyFrame: TMyFrame;
procedure SetTimeDate(const Value: TMyItem);
function ReadTimeDate:TMyItem ;
puis l'enregistrement de la cadre dans la section d'initialisation du formulaire
initialization
begin
RegisterClasses([TMyFrame])
Je puis déclarer les propriétés dont j'ai besoin dans la partie publique de l'unité de forme, qui a accès au châssis et ses composants. J'utilise également des cadres pour consolider des groupes de composants souvent répétés.
Cela semble fonctionner pour les buts que je veux (en cachant Myframe et ses composants), mais est-ce que quelqu'un d'autre a une quelconque expérience de cette méthode?
Y a-t-il des inconvénients à utiliser des cadres? Est-ce que je profite vraiment de cela? L'utilisation d'images imbriquées dans des cadres pose-t-elle des problèmes? Existe-t-il des guides de bonnes pratiques sur l'utilisation des cadres dans Delphi? Existe-t-il des moyens meilleurs/plus faciles d'obtenir le même effet en ce qui concerne les informations GUI cachées dans Delphi?
HMCG
Pour quoi avez-vous besoin de RegisterClasses ([TMyFrame])? –
Parce que je déplace le MyFrame: TMyFrame; dans la section privée, une exception se produit indiquant que «TMyFrame introuvable» se produit si je n'enregistre pas TMyframe. – HMcG
Vous devriez vous concentrer sur la façon de réduire le couplage dans votre conception, de sorte qu'à la fin ce n'est pas grave si vous utilisez des cadres ou non. J'ai trouvé l'article suivant très instructif: http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf – mghie