Bonjour,
J'essaye de comprendre le mécanisme de l'affichage de la VCL pour Delphi, et plus j'avance dans la (l'absence de...) documentation, plus j'ai l'impression de devenir stupide.
Voilà ce que je cherche à faire:
J'ai tout un paquet de fiches à afficher, qui doivent afficher l'identité de diverses personnes. Je voudrais créer une classe qui me permette d'encapsuler l'affichage de l'adresse des gens, qui est toujours formattée de la même manière.
Je veut donc créer une classe qui aura la tête suivante:
Pour la création et l'assignation des valeurs, pas de problèmes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 TPanelAdresse = CLASS( TIECustomPanel ) FLabelAdresse1, FLabelAdresse2, FLabelAdresse3, FLabelAdresse4, FLabelCodePostal, FLabelVille, FLabelPays : TLabel; {...} END;
Par contre, après moultes heures passées à contempler la doc/les readme/les howto de la vcl, je n'ai pas réussi à déterminer quelles callbacks il fallait que je réimplémente pour que ce panel stupide se resize tout seul:
Selon les personnes, l'adresse peut contenir plus ou moins de lignes:
Les lignes vides ne doivent pas s'afficher, du coup le placement des diverses étiquettes varie en fonction du contenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Tartempion1 Tartempion2 12, rue du chat qui pèche Résidence les Mimosas 11100 Narbonne bât 3C 35560 Bazouges-la-Perouse
Je suis alors confronté à un dilemme:
- soit j'active les flags de placement automatiques de la vcl (autosize, anchors et consorts) et mon pauvre petit groupe de 7 étiquettes appelle environ 40 fois sa fonction de Resize et l'interface clignote inutilement; y a-t-il une méthode propre pour utiliser ces mécanismes automatiques?
- soit je réécris explicitement la fonction de placement et de retaillage de mon composant - ce qui n'est conceptuellement pas très dur - mais dans ce cas, je n'ai pas résussi à comprendre quelles méthodes/propriétés il fallait que j'affecte:
* quelles méthodes dois-je implémenter (ou affecter) parmi les suivantes:
* parmi ces méthodes, lelsquelles doivent traiter quels aspects du retaillage?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 AdjustSize Paint OnResize WMSize(...); MESSAGE WM_SIZE; WMPaint(...); MESSAGE WM_PAINT;
* quelles bouts du mécanisme ai-je oublié?
Merci
Partager