|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
initialisation fenetre et ancrage |
Débuté par jérôme, 02 mar. 2018 16:17 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 34 messages Popularité : +1 (1 vote) |
|
Posté le 02 mars 2018 - 16:17 |
Bonjour, J'ai un petit soucis depuis un moment que je n'arrivais pas à identifier et je viens de mettre la main dessus. Par contre je ne vois pas comment le résoudre et là vous allez peut être pouvoir me donner une idée ^^
en gros, j'ai un model de fenetre qui ne sert qu'à une chose: ancrer mes champs. Je m'explique, je cherche a obtenir le même affichage, quelque soit l'ecran que j'utilise. J'ai donc créer une fonction qui liste mes champs et leur attribut un ancrage en fonction de leur position initial et leur taille:
Index = 1 champs est une chaîne = EnumèreChamp(fen,Index) TANTQUE champs <> "" AncrageChamp(champs) Index++ champs = EnumèreChamp(fen,Index) FIN
Procedure AncrageChamp(champs est une chaîne) x1,y1,x2,y2 sont des réels hInit est un réel lInit est un réel QUAND EXCEPTIONEXCEPTION DANS hInit = MaFenêtre..HauteurInitiale lInit = MaFenêtre..LargeurInitiale x1 = {champs,indChamp}..XInitial y1 = {champs,indChamp}..YInitial x2 = x1 + {champs,indChamp}..LargeurInitiale y2 = y1 + {champs,indChamp}..HauteurInitiale Trace("taille fenetre "+MaFenêtre..Nom+"."+champs+": "+MaFenêtre..Hauteur+"*"+MaFenêtre..Largeur)
{champs,indChamp}..Ancrage = ancreBas + ancreDroite + ancreHauteur + ancreLargeur {champs,indChamp}..TauxAncrageDroite = x1/lInit*1000 {champs,indChamp}..TauxAncrageBas = y1/hInit*1000 {champs,indChamp}..TauxAncrageLargeur = (x2/lInit*1000)-{champs,indChamp}..TauxAncrageDroite {champs,indChamp}..TauxAncrageHauteur = (y2/hInit*1000)-{champs,indChamp}..TauxAncrageBas FAIRE Trace("Erreur ancrage champ: "+ErreurInfo(errComplet)) FIN et lors de mon execution en simulateur aucun soucis, sur un telephone qui tient la route idem. mais lorsque j'utilise une tablette un peu moins puissante ou un gsm milieu de gamme j'obtiens celà:
20180302 15333376 - taille fenetre FEN_Config_Adresses.LibTypeDeGroupe: 270*480 20180302 15333391 - taille fenetre FEN_Config_Adresses.Sai_NomDuGroupe: 270*480 20180302 15333408 - taille fenetre FEN_Config_Adresses.LibGrpNumber: 270*480 20180302 15333424 - taille fenetre FEN_Config_Adresses.Btn_RetourConf_groupe: 270*480 20180302 15333439 - taille fenetre FEN_Config_Adresses.ImgSelectionSimulation: 270*480 20180302 15333454 - taille fenetre FEN_Config_Adresses.LibSimulation: 270*480 20180302 15333469 - taille fenetre FEN_Config_Adresses.LibTypeDuGroupe: 270*480 20180302 15333485 - taille fenetre FEN_Config_Adresses.BtnSelectSortieGroupes: 270*480 20180302 15333500 - taille fenetre FEN_Config_Adresses.BtnEnregistreGroupe: 270*480 20180302 15333515 - taille fenetre FEN_Config_Adresses.LibContenuGroupe: 270*480 20180302 15333530 - taille fenetre FEN_Config_Adresses.LibZone: 270*480 20180302 15333546 - taille fenetre FEN_Config_Adresses.SaiNumEvent: 270*480 20180302 15333590 - taille fenetre FEN_Config_Adresses.ZrZoneContenu: 1032*1920 20180302 15333605 - taille fenetre FEN_Config_Adresses.Sai_ZoneName: 1032*1920 20180302 15333620 - taille fenetre FEN_Config_Adresses.Lib_Sai_ZoneName: 1032*1920 20180302 15333635 - taille fenetre FEN_Config_Adresses.BtnEnregistreZones: 1032*1920 20180302 15333651 - taille fenetre FEN_Config_Adresses.BtnEnregistreCapteur: 1032*1920 20180302 15333666 - taille fenetre FEN_Config_Adresses.BtnAvantCapteur: 1032*1920
en gros ma fenêtre change de taille et prend sa dimension final au milieu du traitement de ma déclaration. ce qui implique un ancrage correcte pour la première partie et aucun ancrage pour les suivants (par défaut mes champs ne sont pas ancré en édition) je pourrai éviter ce problème en ancrant mes champs mais cela voudrait dire que le déplacement d'un champs signifierai le recalcule de son ancrage et vu la quantité de champs présent dans l'application ça va être lourd...
quelqu'un saurait comment bloquer cet affichage le temps de laisser le calcule se finir? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 34 messages Popularité : +1 (1 vote) |
|
Posté le 05 mars 2018 - 10:46 |
Je viens de remarquer que je n'avais pas le problème sous Androïde 7. Uniquement les autres versions. sous Androïde 7 il semble redimensionner pas mal de choses seul étonnamment (les polices, la hauteurs des lignes d'une table...) et mon ancrage est bon. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 34 messages Popularité : +1 (1 vote) |
|
Posté le 05 mars 2018 - 17:00 |
En testant je me suis rendu compte que le problème semblait lié aux zone répétée et aux table. j'ai donc passé ma journée à tester (10 fois plus vite n'est-ce pas...) et j'en suis venu à la conclusion que l'initialisation de la fenêtre laisse la main lorsqu'il arrive sur un champ complexe (table, zr, liste...) j'ai donc déplacé ces champs en fin d'initialisation et effectivement maintenant tous mes champs sont bien placé SAUF eux.
ça avance mais bon... quelqu'un saurait me dire pourquoi ces champs posent ce problème et s'il y aurait un moyen de bloquer l'initialisation le temps nécessaire? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 34 messages Popularité : +1 (1 vote) |
|
Posté le 06 mars 2018 - 11:08 |
J'ai enfin trouvé, merci à moi même du coup :/
Pour ceux qui aurait le même problème voilà la ligne qui posait problème:
{ch,indChamp}..HauteurLigne = ArrondiInférieur({ch,indChamp}..HauteurLigne * grAugmentationY) je l'avais rajoutée dans les versions < 7 d'Androïde car la hauteur de ligne n’était pas automatiquement ancrée. c'est cette ligne qui lance le repeint de la fenêtre et donc me flanche la fin du traitement. je l'ai donc retirée et placée après la fin de tous les ancrages. je n'ai plus de soucis. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|