-
Error résolution écran
Bonjour,
Dans notre logiciel nous forçons une taille minimale d'une fenêtre, le problème est que sur un écran trop petit une popup d'erreur s'affiche au démarrage.
Comment peut-on empêcher l'affichage de cette erreur sachant qu'elle n'affecte pas le logiciel par la suite ?
Merci d'avance :)
-
Un "popup d'erreur" ?
Qui le provoque ?
Votre code volontairement ? suffit de le retirer !
Le code Delphi via une Exception ? suffit de mettre un try except !
Autre ?
-
Dans les réglages de la Form1, en contraints nous avons mis un minWidth (985) et minHeight (785).
Le problème c'est que une faible résolution d'écran affiche une erreur mémoire au démarrage sans pour autant affecter le logiciel.
http://image.noelshack.com/fichiers/...ture-copie.png
-
Effectivement, des contraints très élevés !
Je suppose qu'en mettant, juste pour tester un truc genre 600x480 comme Min contraints,
la violation d'accès ne se produit plus !? :roll:
C'est peut-être une solution !
Via un Gestionnaire d’Événement affecté à OnCreate de cette fenêtre, tu vérifie la résolution en cours, la variable Screen fournira ce qu'il faut pour déterminer la totale taille du bureau ou juste la taille disponible (WorkArea)
Si la résolution en cours est trop faible, tu forces les Min contraints à Zéro ou alors pil poil les valeurs de WorkArea
Si la résolution en cours est suffisante, tu laisse les contraints comme prévu
Si FormCreate est un peu trop tard pour empêcher l'exception, deux approches possibles :
- mettre Zéro en DesignTime dans l'inspecteur d'objet et modifier Min contraints uniquement en RunTime
- modifier directement le constructor Create ou alors Loaded !
Si c'est la MainForm, difficile de capturer, peut-être le OnExecption de l'Application, mais faudrait pas inhiber toutes les erreurs !
Si c'est une TForm secondaire (sans CreateForm), l'exception se produit-elle durant le Create ou le Show ?
Faudrait tenter un try except !
Sinon, avoir une VA pour des mauvaises constraints, je trouve cela étrange, quel Delphi utilises-tu ?
Sur C++Buider XE3 avec Seven,
j'ai forcé une TForm secondaire (T.Create) ainsi qu'une TForm principale (App.CreateForm)
avec 2000x2000 comme Contraints ce qui a modifié Width et Height
Cela fonctionne sans problème, j'obtiens juste une fenêtre bien trop grande car dépasse le WorkArea mais si l'on est attentif,
on peut constater que la zone cliente de la fenêtre en réalité est de la taille du bureau,
Windows empêche la création de fenêtre plus grande, sous Seven, il semble qu'il y a une légère tolérance à cause des bordures plus large,
Sous XP, il me semble que cela limitait la taille externe de la fenêtre et non celle de la zone cliente !