Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

UserControl, Resize

11 réponses
Avatar
Denis
Bonjour à tous
En mode création, redimensionner un UserControl provoque UserControl_Resize
pour connaitre la largeur et la hauteur du contrôle.
Mais comment savoir Left et Top en le déplacant toujours en mode création

Merci

Denis

10 réponses

1 2
Avatar
LE TROLL
Bonjour,

Left, top sont des propriété accessibles directement, par exemple dans
le resize, suffit d'y rajouter le test de Left et Top :

sub resize...
msgbox objet.top

Mais je ne comprend pas tout, car width et height sont aussi
disponibles, donc tu as a priori les 4 éléments permettant de directement de
manipuler le contrôle, par exemple :

for i = 1 to 10
objet.width = objet.width + 1
objet.height = objet.height + 1
objet.top = objet.top + 1
objet.left = objet.left + 1
me.refresh
next i

Si tu veux placer un objet avant de l'afficher, ce serait plutôt le
contraire, tu le places d'abord avec left et top, puis tu lui donnes sa
taille (width et left) + refresh.

non testé

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Denis" a écrit dans le message de
news:
Bonjour à tous
En mode création, redimensionner un UserControl provoque
UserControl_Resize
pour connaitre la largeur et la hauteur du contrôle.
Mais comment savoir Left et Top en le déplacant toujours en mode création

Merci

Denis


Avatar
Denis
Bonjour LE TROLL

En mode création, lorsque tu change les dimensions du UserControl, il y a
l'événement Resize, mais il n'y a pas d'événement si du déplace le
UserControl dans la form conteneur
Je peux donc toujours savoir le Height et le Width mais pas le Left et le Top?

Merci

Denis
Avatar
Denis
Compléments d'information

Dans un UserControl (Contrôles Utilisateur), il n'y a pas de propriétés
.Left et .Top
Si tu veux savoir les valeurs de ces propriété, tu dois utiliser
Extender.Left et Extender.Top
Malheureusement, il n'y a aucun événement provoqué par le déplacement du
UserControl comme l'événement UserControl_Resize qui est provoqué par le
changement des propriétés .Height et .Width

Merci
Denis
Avatar
LE TROLL
Bonjour,

Je ne suis pas certain de tout suivre :

Par exemple le code qui suit fonctionne :

Sub Form_Load() ' button1 left top = 40
Form1.ScaleMode = vbPixels
Command1.Top = 200
Command1.Left = 400
Command1.Width = 200
Command1.Height = 100
End Sub

Sub Command1_Click()
Command1.Top = 100
Command1.Left = 300
Command1.Width = 150
Command1.Height = 5
End Sub

On n'est pas obligé de passer par une procédure évènementielle à tout
prix, tout dépend comment c'est déplacé, preuve en est, le code ci-dessus...

Deux questions :
- C'est quoi le mode "création"... est-ce après lancement mais avant
affichage de la form ?
- Peux-tu expliquer de quelles façon, par quelle méthode, quel objet et en
quelle occasion il est déplacé, on va bien trouver une solution ?

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Denis" a écrit dans le message de
news:
Bonjour LE TROLL

En mode création, lorsque tu change les dimensions du UserControl, il y a
l'événement Resize, mais il n'y a pas d'événement si du déplace le
UserControl dans la form conteneur
Je peux donc toujours savoir le Height et le Width mais pas le Left et le
Top?

Merci

Denis


Avatar
LE TROLL
Ah ah, du vbA, j ne connais pas, mes réponse seront hélas VB, alors
parfois ça ne marchera pas, mais souvent c'est transposable...

Généralement un contrôle ne se promène pas, il est fixe, il y a certes
des exception, sinon on utilise le drag and drop...

S'il faut utiliser extender.top et left, ben n'hésite pas :o)

En fait, dans l'absolu tu dois au moins savoir où est ton contrôle au
démarrage, partant de cet élément et selon le mode de déplacement, il
suffira ensuite de noter à nouveau son emplacement dans la procédure qui ca
servir au déplacement, enfin, a priori, c'est là ou je décroche, car ton
contrôle ne se balade pas tout seul, à moins que... sinon, il y a une
procédure qui va servir à recevoir l'ordre de déplacement, donc c'est à
partir de cette dernière que tu vas avoir la position, soit qu'il est
glissé, soit qu'il est cliqué et envoyer par glissement en boucle, ou par
saut, etc...

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Denis" a écrit dans le message de
news:
Compléments d'information

Dans un UserControl (Contrôles Utilisateur), il n'y a pas de propriétés
.Left et .Top
Si tu veux savoir les valeurs de ces propriété, tu dois utiliser
Extender.Left et Extender.Top
Malheureusement, il n'y a aucun événement provoqué par le déplacement du
UserControl comme l'événement UserControl_Resize qui est provoqué par le
changement des propriétés .Height et .Width

Merci
Denis



Avatar
Denis
Bonjour LE TROLL

Si je crée un UserControl et je désire l'utiliser dans une form conteneur
standard, je suis à ce moment là en mode création de mon application.

En déposant mon UserControl fraichement créé dans une form, l'événement
Resize se produit et dans mon UserControl je peux savoir les propriétés Left,
Top, Height et Width

Mon application n'est toujours pas exécutée.

Je désire changer la dimension de mon UserControl dans ma form, toujours en
mode création, alors se produit l'événement Resize du UserControl et je peux
savoir dans le code de celui-ci, les propriétés Heigth et top, ainsi que Left
(avec Extender.Left et Top avec Extender.Top)

Mais si je désire déplacer mon UserControl dans ma form, toujours en mode
création, aucun événement se produit pour que je puisse savoir, dans le code
du UserControl, ses nouvelles propriétés Left et Top.

Naturellement, lorsque j'exécute mon application, mes contrôles ne se
déplacent pas; mais en mode création il m'arrive de les déplacer à un autre
endroit dans la form conteneur.

Espérant avoir été plus explicit

Merci
Denis
Avatar
Denis
PS: Je travaille avec VB6

Denis
Avatar
LE TROLL
Ah, donc c'est au moment où la form est lancée (load), mais pas
encore visible (show).

Je viens de voir dans l'éditeur VBA, ça marche en changeant le code au
lancement, ceci :

Sub UserForm_Initialize()
CommandButton1.Height = 100
CommandButton1.Width = 500
CommandButton1.Left = 200
CommandButton1.Height = 4
End Sub

Mais c'est un peu surprenant d'aller dans le code pour changer la place
d'un objet, en règle général, si la disposition doit changer, elle est
prévue à l'origine pour tous les cas par le code, ou encore on manipule
depuis la form par une commande...

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Denis" a écrit dans le message de
news:
Bonjour LE TROLL

Si je crée un UserControl et je désire l'utiliser dans une form conteneur
standard, je suis à ce moment là en mode création de mon application.

En déposant mon UserControl fraichement créé dans une form, l'événement
Resize se produit et dans mon UserControl je peux savoir les propriétés
Left,
Top, Height et Width

Mon application n'est toujours pas exécutée.

Je désire changer la dimension de mon UserControl dans ma form, toujours
en
mode création, alors se produit l'événement Resize du UserControl et je
peux
savoir dans le code de celui-ci, les propriétés Heigth et top, ainsi que
Left
(avec Extender.Left et Top avec Extender.Top)

Mais si je désire déplacer mon UserControl dans ma form, toujours en mode
création, aucun événement se produit pour que je puisse savoir, dans le
code
du UserControl, ses nouvelles propriétés Left et Top.

Naturellement, lorsque j'exécute mon application, mes contrôles ne se
déplacent pas; mais en mode création il m'arrive de les déplacer à un
autre
endroit dans la form conteneur.

Espérant avoir été plus explicit

Merci
Denis


Avatar
LE TROLL
Ben alors, si tu es en VB 6, tout ce que je t'ai dit fonctionne, veux-tu
bien m'envoyer ton code ça ira plus vite, tu peux m'envoyer ça par le lien
sous-cité du site, "contact"...

Dans VB, suffit de faire

load formX
formX.objet.left, height, top, width
formX show

Mais de toute façon, on ne change pas la place dans objet en changeant
le code à chaque fois, on prévoit tous les cas dans le code ou une commande
sur la form, c'est aussi la méthode qui est à ajuster, car un utilisateur
n'a pas accès au code, il ne peut changer la place d'un objet, c'est très
curieux comme conception ?

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Denis" a écrit dans le message de
news:
PS: Je travaille avec VB6

Denis


Avatar
Vincent Guichard
Denis a écrit :
Mais si je désire déplacer mon UserControl dans ma form, touj ours en mode
création, aucun événement se produit pour que je puisse savoir, dans le code
du UserControl, ses nouvelles propriétés Left et Top.



Bonjour

Ton contrôle change de comportement suivant sa position dans le
conteneur? Autant je peux comprendre qu'on puisse changer l'apparence ou
le comportement d'un contrôle en fonction de sa taille, autant j'ai du
mal à voir pourquoi cela devrait être le cas selon s'il est à   120 twips
du haut ou à 500 twips...

Tout ça pour dire qu'un événement resize a dû sembler utile aux
concepteurs de VB6, pas pas l'événement moved.


Vincent Guichard
1 2