tu est dure la jmfmarques
tu est dure la jmfmarques
donc voilà ce que je voulais dire jmf.
Par exemple :
coin inférieur gauche : controle.left(X), controle.top + controle.height (Y)
comment dire que le coin inférieur gauche vaut la valeur que je veux.
Xavier
C'était là la condition, bien évidemment (voir plus haut), sinon, ce n'est plus un contrôle, mais le container d'un contrôle !Envoyé par pickwick_75
Pour répondre à Asdorve :
où est le problème ?
X1 = controle.left
Y1 = controle.top
X2 = X1 recalculé
Y2 = Y1 recalculé
controle.move X2,Y2 déplacera le coin supérieur gauche à ses nouvelles coordonnées
Kif Kif pour chaque coin
Kif Kif pour chaque coin, à voir...
j'en suis pas si sur.
Xavier
Moi oui, j'en suis sur....
Mais tu ne pourras pas déterminer une ordonnée différente pour un coin et l'autre(en haut... ou en bas), bien évidemment, avec un contrôle.
C'est COMPLETEMENT, qu'il te faudrait en CREER un !
En d'autrres termes, tu ne peux utiliser un contrôle existant de VB pour lui donner une rotation qui le conduirait à être "incliné....
C'est ce que je te dis depuis le début !
Rest à savoir si tu te lances dans une aventure de CREATION de contrôle, autrement qu'en utilisant une simple image de ce contrôle, placée dans un autre contrôle (un container) qui, lui, resterait parallèle à ta Form...(ce placement d'une image ne serait pas un contrôle et est donc à écarter...)
Je te le dis de suite : tu vas... c'est sûr... te casser beaucoup de dents ...!
je m'en doutais, j'avais compris.
Mais pour ce qui est d'un shape rectangle, c'est la même chose?
Xavier
Pour un Shape (contrôle, donc) rectangle : kif kif
Pour un dessin rectangle (avec Line) , c'est autre chose mais ce n'est pas un contrôle.
justement, pour line (je sais que ce n'est pas un contrôle) je n'arrive pas à l'utiliser, je reprends les ex de l'aide en ligne, mais ça n'affiche rien...
Xavier
Tu veux construire un rectangle avec Line ?
Ok, Ok, en voilà un parallèle aux bords de la Form :
et.... que vas-tu faire avec çà ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Command1_Click() Me.Line (100, 100)-(1000, 1000), , B End Sub
Le prochain message sera surement pour t'expliquer comment et avec quelle force tu vas rentrer dans le mur (J'ai essayé, quand j'étais moins vieux... et suis arrivé à certaines conclusions... après beaucoup de vain entêtement...
J'ai laissé "courir" ce sujet car il m'apparait utile pour tous d'apprendre à trravers lui....
ok, mais tu vois, je sais que je vais droit dans le mur, mais ça me permet de tester les limites de vb...
Xavier
Et tout est là ... sauf un point : pourquoi VB a-t-il décidé de procéder ainsi ?mais ça me permet de tester les limites de vb
Il y a une seule réponse : suite au prochain numéro (après que tu auras essayé de la deviner...)
je dirais: pour embêter les gens, ou pour obliger un développeur à créer ces propres contrôles,
ou les développeurs de chez Microsoft ont oublié ses propriétés.
Peut être que la réponse est évidente, mais je ne la vois pas comme ça du premier abord.
Xavier
OK !
Je reviendrai ce soir avec des idées plus claires pour exposer ici mes conclusions d'après plus de 14 mois de réflexions diverses... sans en faire un roman (de façon synoptique).
Ce sera intéressant... Promis !
as-tu les idées claires maintenant? il est 20:22
Xavier
Claires ?
A peu près... enfin... comme toujours après un bon repas ...
On y va donc :
Sans être dans les secrets de VB, les diverses manipulations qu'il m'a été donné de faire m'ont conduit aux conclusions suivantes :
Lorsque l'on clique sur un contrôle VB, on clique en réalité sur l'écran, y compris si le contrôle se trouve dans un container lui même contenu, directement ou par autre(s) container(s) interposé(s), sur l'écran.
Comment VB sait-il que l'on a "cliqué sur un contrôle VB" ? Tout simplement par ce que, à la construction par l'utilisateur (stade projet), VB a mémorisé les différentes coordonnées du contrôle . Lorsque l'on clique sur l'écran (donc), VB va rechercher si ce clic correspond à l'une des zones "contrôles" dont il a mémorisé les coordonnées et va décider, en connaissance de cause, que l'on a clliqué sur l'un de ses contrôles, bien identifié.
Si ces "images"/contrôles (car ce ne sont que des images), sont rectangulaires et que, de surcroît, ces rectangles sont parralèles à l'écran, il lui suffit de connaître les coordonnées des 4 coins (ils les a gardées en mémoire). Dès lors, il sait, sans grands calculs, si l'on est à l'intérieur de l'un de ses rectangles......un point de coordonnées Px,Py est à l'intérrieur d'un rectangle x1,Y1 - x2,Y2 - x3,Y3 - x4,Y4, en effet, si les conditions suivantes sont réunies :
x1= x3 < px < x2 = x4
y1 = y2 < py < y3 = y4
Cela lui demande peu d'exercice...
Considéropns maintenant l'hypothèse de contrôles non rectangulaires et surtout non parallèles à l'écran :
Les calculs deviendraient alors bien plus complexes pour déterminer si oui ou non on se trouve à l'intérieur d'un polygone, avec pour résultat, une lenteur considérablement accrue....
VB aurait toutefois pu le faire... et le proposer.... il a préféré s'abstenir..., et ce d'autant qu'il lui aurait fallu, en plus, ajouter des lenteurs dûes à l'affichage "incliné" de textes.
VB n'ayant pas voulu, peut-on se substituer à lui pour créer de nouveaux contrôles "inclinables" ? Oui, mais à quel prix ? Celui d'adloindre un fichier contenant tous ces contrôles et leurs coordonnées, ainsi qu'une fonction complexe tendant à déterminer, au clic sur l'écran (on sait faire y compris si on clique sur un vrai contrôle VB), si l'on est dans un des contrôles non VB "fabriqués"... Oui mais voilà ! il faudrait en plus (puisque ce ne seraient pas des contrôles VB, décider d'événements à créer lorsque le clic se fait sur un de ces "contrôles" non gérés par VB... etc... etc...
Pour tout résumer... et de fil en aiguille... il faudrait tout "simplement" faire un nouveau VB (et une fois fait,... ne plus se servir de VB )
Que tal ?
Has entendido ahora ?
salut,
ça réveille de bon matin, ton explication est tout à fait rationnelle et empreinte de bon sens. Merci. Tout ça coule de sens.
Xavier
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager