Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
4 juin 2007 à 18:27
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
13 juin 2007 à 16:15
Bonjour ('soir) les surdoués!
J'ai une flopée de TControls a créer pendant le runtime.
Bien sûr, je les aligne avec les propriétés .left et .top pour que ça fasse joli.
Jusque là, tout baigne...
Mais si par hasard ma fiche comporte une barre de défilement, les valeurs des coordonnés prises en compte sont comptées à partir des bords de la fenêtre visible à l'écran, et non pas à partir des bords de la fenêtre logique.
Ce qui fait que c'est le bordel dans le bel alignement prévu à la conception.
Ma question: existe t-il une méthode simple pour éviter ce phénomène? (pour éviter les calculs gonflants avec ScrollBar.Positions, etc...)
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 12 juin 2007 à 19:19
Salut,
après réflextion j'en arrive à ceci :
Var SCROLLINFO : TSCROLLINFO;
begin SCROLLINFO.cbSize := SizeOf(TSCROLLINFO);
SCROLLINFO.fMask := SIF_ALL;
GetScrollInfo(Handle, SB_VERT, SCROLLINFO);
Memo1.Lines.Add(Format('La taille réelle de la page est de : %d pixels', [SCROLLINFO.nMax]));
end ;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 juin 2007 à 12:58
Prêt pour la deuxième couche
Argh ....
mais comment tu fais pour ne pas que ça fonctionne
je viens de faire les testes de D4 à Turbo Delphi et sans changer une seule virgule au code
que je donne plus haut
et bien sur ça fonctionne
Sinon ScrollInfo.nMax contient la taille en pixels de ClientHeight
et pour la mise en place de la fiche c'est très simple :
Faire nouvelle application y poser un TMemo et un TButton dans la partie haute de la fiche.
Et dans la partie basse de la fiche tu y déposes d'autres composants et tu réduit la taille de la fiche jusqu'à
ce que les composants du bas aient disparus, la ScrollBar apparait automatiquement ....
Pour finir tu mets le code que je te donne dans le OnClick du bouton ... et voilà ... enjoy it
je repasserai plus tard pour la troisième couche
@+
Cirec
<hr size="2" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 juin 2007 à 16:05
Trop tard ... comme tout était prêt ... je passe quand même la troisième couche
Petite précision :
Quand je dis :
"Sinon ScrollInfo.nMax contient la taille en pixels de ClientHeight"
ce n'est pas la vrai définition
ScrollInfo.nMax contient la position maximale du scroll ... ce qui correspond à la taille réelle du controle
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 4 juin 2007 à 21:42
:)))
Toi, t'es un surdoué-modeste. Humble, mais surdoué quand même. T'étais donc inclus dans le 'bonsoir', comme tous les autres membres d'ailleurs.
T'as raison, c'est pas le genre de contrainte qui mène au suicide collectif...
Mais je me demandais simplement s'il n'y avait pas un truc que j'avais zapper pour accéder aux coordonnées de la TForm logique. Ca m'a étonné de la part de Delphi.
C'était juste une question pour devenir moins con. C'est tout... ;)
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 6 juin 2007 à 17:16
Salut Simon,
Mais le HorzScrollBar peut aussi apparaître à la suite d'un redimensionnement de la fiche par l'utilisateur...
Après quelques recherches, il semble bien que Delphi ne stocke nulle part les coordonnées par rapport à la fiche logique. Il ne s'occupe que de la fenêtre visible.
C'était la question que je me posais en fait...