Comment dessiner sur un TPanel
J'ai besoin de tirer sur un TPanel, idéalement directement donc je n'ai pas un autre composant sur le haut de mousevent-recouvrement de l'événement (je veux dessiner un peu à la taille "grip"). Comment dois-je faire?
je me demande comment avez-vous réussi à créer le compoennts tag? 😉 comme par exemple votre question +1
C'était une faute de frappe. J'ai corrigé...
Merci @MasterPeter pour le sourire, et @Mason Wheeler pour la correction.
C'était une faute de frappe. J'ai corrigé...
Merci @MasterPeter pour le sourire, et @Mason Wheeler pour la correction.
OriginalL'auteur Jamo | 2009-05-01
Vous devez vous connecter pour publier un commentaire.
Vraiment le faire correctement, vous devriez probablement écrire une classe descendante. Remplacer le
Paint
méthode pour dessiner le dimensionnement de l'adhérence et de remplacer laMouseDown
,MouseUp
, etMouseMove
méthodes pour ajouter le redimensionnement de la fonctionnalité de contrôle.Je pense que c'est une meilleure solution que de tenter de tirer sur un
TPanel
dans le code de votre application pour un couple de raisons:Canvas
propriété est protégée dansTPanel
, de sorte que vous n'avez pas accès en dehors de la classe. Vous pouvez obtenir autour de ce type de coulée, mais c'est de la triche.Voici quelque chose pour vous aider à démarrer:
Notez que c'est également sage car, par exemple, Lazare sur la non-windows(et peut-être Kylix trop), ne permettent pas de peinture sur la toile en dehors de la .PEINTURE à l'événement. De sorte qu'il peut être intelligent de faire appliquer directement une structure qui fait que le seul dessin est fait à la peinture à l'événement.
OriginalL'auteur Rob Kennedy
C'est l'un des beaucoup de beaucoup de façons que Raize Composants peut rendre votre vie plus facile. Je viens d'aller dans Delphi, déposer sur une TRzPanel, et le type:
Je suis sûr qu'il y a d'autres solutions mais je n'ai pas à chercher avec Raize.
(juste un client satisfait depuis environ 10 ans...)
EDIT: compte tenu de votre objectif et de votre déclaration que vous avez Raize Composants déjà, je dois aussi souligner que TRzSizePanel poignées de redimensionnement du panneau et utile des événements comme OnCanResize (afin de déterminer si vous souhaitez autoriser le redimensionnement à une nouvelle largeur ou hauteur).
Comment Raize faire que de plus facile que de dessiner sur un TPanel? À moins que la Raize de contrôle, la Toile du public à la propriété plutôt que de protégés, pour une raison quelconque.
À partir de l'exemple de code, il semblerait que c'est exactement la raison pourquoi.
Je trouve que l'utilisation de Raize composants simplifie mon codage et rend mes applications visuellement cohérent. Ray a pensé à presque tout, et son soutien sur la raize.public.rzcomps.soutien de groupe de discussion est exceptionnel - j'ai lu tout ce qu'il écrit dans ce groupe de discussion parce que sa pratique de codage est si propre. Son code source est la peine de lire pour la même raison.
OriginalL'auteur Argalatyr
La façon la plus simple de le faire est de mettre juste un TImage sur le panneau. Mais si vraiment vous ne voulez pas le faire, tapez TCanvas dans l'éditeur de code, appuyez sur F1, et amusez-vous à apprendre sur la façon dont il fonctionne sous le capot. (Ne dis pas que je ne vous avais pas prévenu...)
Le TMyPanel(panneau) de code à partir de ce lien est la clé. Si vous définissez une classe héritée dans la même unité où vous voulez accéder à la toile, vous pouvez accéder à tous les biens protégés de la classe. C'est une partie de Delphi "classes à l'intérieur d'une unité sont des amis". C'est aussi un hack. 🙂
Quand vous dites "C'est aussi un hack", est-ce à dire que cette approche est inappropriée, à votre avis? (Juste essayer d'apprendre tout ce que je peux à partir de ces réponses, je suis arriver sur cette question).
OriginalL'auteur Mason Wheeler
Comment Ajouter de la Taille des Poignées pour les Contrôles en cours de Redimensionnement au Moment de l'Exécution:
http://delphi.about.com/library/weekly/aa110105a.htm
TAdvPanel:
http://www.tmssoftware.com/site/advpanel.asp
OriginalL'auteur Bob S