La prochaine version du composant ChinaCock introduit une solution exclusive pour les animations de transition entre formulaires, ajoutant des effets d'animation lors de l'appel et de la fermeture des formulaires.
Cette implémentation présente les avantages suivants :
- Séparation des responsabilités : L'animation est totalement indépendante des composants visuels et non visuels sur la fenêtre, réduisant ainsi le couplage. Une seule ligne de code suffit pour ajouter un effet d'anmiation en appelant les méthodes
PushToFormpour l'entrée ouPopBackFormpour la sortei. - Faible couplage entre formulaires : La communication entre la fenêtre source et la fenêtre cible est gérée par une classe d'animation dédiée,
TFormAnimTransition, pour afficher et fermer les formulaires cibles. - Compatibilité native Delphi : L'implémentation s'adapte aux méthodes natives de création de formulaires dans Delphi, utilisant les instances de formulaires déclarées automatiquement.
- Fluidité et absence de scintillement : Des opitmisations approfondies, basées sur les SDK de plateforme natifs, garantissent des animations fluides et sans scintillement.
- Multiplateforme : Actuellement compatible avec les plateformes Windows et Android.
Voici comment intégrer cette solution dans un projet pratique. Supposons un formulaire principal FormPrincipal qui appelle un formulaire secondaire FormulaireCameraID pour la vérification d'identité.
Appel d'un formulaire avec animation
Pour afficher FormulaireCameraID à partir de FormPrincipal, utilisez le code suivant :
procedure TFormPrincipal.BoutonActionClic(Sender: TObject);
begin
if not Assigned(FormulaireCameraID) then
FormulaireCameraID := TFormCameraID.Create(Application);
TFormAnimTransition.AfficherAvecAnimation(Self, FormulaireCameraID, TTypeTransition.GlisserDepuisDroite, False,
procedure(AInfo: TInfoTransition)
begin
// Callback après l'affichage complet du formulaire cible, pour l'initialisation ou le chargement de données
end,
procedure(AInfo: TInfoTransition)
begin
// Callback lors de la fermeture du formulaire cible, pour le traitement des données ou la libération
FreeAndNil(FormulaireCameraID);
end);
end;
La méthode AfficherAvecAnimation gère l'animation en une seule ligne. Voici ses paramètres :
class procedure TFormAnimTransition.AfficherAvecAnimation(
ASource: TCustomForm; // Formulaire source
ACible: TCustomForm; // Formulaire cible, instancié par le source
const ATypeTransition: TTypeTransition = GlisserDepuisDroite; // Type d'animation
const ASourceFixe: Boolean = False; // Si vrai, seule la cible est animée
const AApresAffichage: TProc<TInfoTransition> = nil; // Callback après affichage
const AApresFermeture: TProc<TInfoTransition> = nil); // Callback après fermeture
Fermeture d'un formulaire avec animation
Pour fermer FormulaireCameraID avec une animation, ajoutez un gestionnaire d'événement au bouton de retour :
procedure TFormCameraID.BoutonRetourClic(Sender: TObject);
begin
FermerAvecAnimation(MrAnnuler);
end;
procedure TFormCameraID.FermerAvecAnimation(const AResultatModal: TModalResult);
begin
Self.ModalResult := AResultatModal; // Optionnel selon les besoins
TFormAnimTransition.RevenirArriere(); // Ferme le formulaire avec animation
end;
Ainsi, en seulement deux lignes de code, vous pouvez ajouter des transitions animées aux interactions entre formulaires sans modifier la logique existante, assurant une expérience utilisateur fluide et moderne.