Bonjour,
Il est normal que celà se produise car tu lance deux instructions opposées. Il y a deux façons que je vois pour régler ton problème
La première consiste à te créer une fonction public que tu appelle juste après la création et qui te retourne le nombre d'éléments dans ton checkboxlist et tu lance ou non le modal selon le nombre retourné
Ex :
MaFenetreModale := TMaFenetreModale.create; // création de ton modal
if MaFenetreModale.PossedeElement then // vérifie si des éléments sont présents
MaFenetreModale.ShowModal // si oui, ouvre si éléments
else
MessageDlg('Pas d''éléments, fenêtre fermée',mtError,[mbOk],0); // si non, affiche un message d'erreur
La deuxième solution (que j'aime moins) s'applique si tu veux absolument voir qu'il y ai eu une fenêtre s'afficher et se fermer. Il te suffit de mettre un timer qui est activé au show de ta fiche et qui ferme la fenêtre s'il n'y a pas d'éléments. Bien sûr, il faut désactiver le timer après la première vérification si tu ne veux pas pomper du cpu pour rien. Ce n'est pas une belle solution, je te conseille l'autre mais elle peut te dépanner si tu doit voir la fenêtre
J'espère t'avoir aider