Etape 4 - Définir la taille et l'alignement (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Création d'un composant FireMonkey (C++)


Pour tester ce composant particulier, les boutons doivent être placés dans une fiche ouverte en tant que boîte de dialogue modale avec ShowModal.

  1. Activez le projet PanelTester.exe et ouvrez la fiche principale, PanelTest.cpp. Cette fiche ouvre la fiche de dialogue.
  2. Renommez la classe (auto-générée en tant que Form1) en TPanelTestForm avec Refactoring > Renommer. Cela change aussi automatiquement la variable de référence globale en PanelTestForm.
  3. Puis dans TestDialog.h, renommez la fiche (Form2) en TTestDialogForm afin que sa référence soit TestDialogForm.
  4. Basculez la fiche de dialogue sur le Concepteur de fiches. Déposez un TDialogButtonPanel, trouvé sous la catégorie Exemples de la palette d'outils, sur la fiche.
    Notez que le panneau n'est ni correctement dimensionné, ni aligné en bas. En voici la raison :
    • La taille et l'alignement du contrôle qui est créé est indépendant du composant ressource de style utilisé pour le restituer.
    • Donc, même si la ressource de style racine (le TRectangle) est définie sur Bottom, dans la plupart des cas vous ne souhaitez pas cela car la ressource de style est un enfant du contrôle, et vous ne souhaitez pas que la réalisation visuelle de ce contrôle soit restreinte à une de ses parties, quelle que soit la façon dont vous essayez de redimensionner ou d'aligner le contrôle.
    • Quand les ressources de styles sont appliquées, leur propriété Align est toujours définie sur Contents, de telle sorte qu'elles occupent la zone de contenu entière du contrôle qu'elles restituent.
    Mais ce que vous voulez réellement faire est de définir la propriété Align du composant personnalisé, pas sa ressource de style. Pour ce faire, déclarez et implémentez un constructeur. Déclarez aussi la valeur par défaut pour la propriété, et définissez les propriétés Height et Width (avec Bottom la largeur n'a pas réellement d'importance, mais vous pouvez la définir sur un minimum représentatif). Ceci est effectué dans l'unité DialogButtons , dans le package DialogButtonsPackage :
 public:
	__fastcall TDialogButtonPanel(TComponent* Owner);
__published:
	__property Align = { default = TAlignLayout::Bottom };
__fastcall TDialogButtonPanel::TDialogButtonPanel(TComponent* Owner)
: TStyledControl(Owner) {
	Height = 46;
	Width = 300;
	Align = TAlignLayout::Bottom;
}
5. Pour voir ces changements, ré-installez le package composant : cliquez avec le bouton droit sur le projet package dans le Gestionnaire de projets et sélectionnez de nouveau Installer.
6. Puis de retour dans la fiche de boîte de dialogue, supprimez le composant et ajoutez un autre composant de la palette. Le panneau doit être à présent correctement dimensionné et aligné.
7. Pour voir votre composant en action, retournez à la fiche principale et déposez un bouton (pour ouvrir la boîte de dialogue) et un libellé (pour voir le code de résultat modal).
8. Définissez le gestionnaire d'événement OnClick pour le bouton, comme suit :
void __fastcall TPanelTestForm::Button1Click(TObject *Sender)
{
	int ModalResult;
	ModalResult = TestDialogForm->ShowModal() ;
	Label1->Text = IntToStr(ModalResult);
}
9. Exécutez maintenant le projet PanelTester.exe et cliquez sur le bouton pour ouvrir la boîte de dialogue. Cliquer sur l'un de ses trois boutons ferme la boîte de dialogue, et renvoie le résultat modal correspondant.


Précédent

Suivant

Voir aussi