Aide sur la création d'un composant en VB6 !! [Résolu]

Signaler
-
 kari63 -
Salut à tous,
Je travail sous VB6 et j'aimerai créer un Contrôle utilisateur avec deux TextBox et une Line pour désigner un nombre rationnel, qui doit pouvoir recevoir 2 entiers, un comme numérateur et l'autre comme dénominateur qu'on peut manipuler ensuite.
Et si quelqu'un puisse me donner un fil pour commencer je serai ravi et très reconnaissant !!

Merci

14 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
As-tu regardé ce qu'était TextWidth ?
Je veux bien te mettere sur la voie, mais n'irai pas plus loin.
Regarde ce que fait ceci :
sur un Form, une textbox et ce code :
Private Sub Text1_Change()
  If TextWidth(Text1.Text & "A ") >= Text1.Width Then
      Text1.Width = TextWidth(Text1.Text & "A ")
      Me.Width = Text1.Width
      Text1.Text = Text1.Text
  End If
End Sub

Private Sub Text1_GotFocus()
  Set Font = Text1.Font
  Text1.Left = 0
  Me.Width = Text1.Width
End Sub

Lance, écris dans la textbox (écris beaucoup) et regarde !
Je ne t'ai mis dans cet exemple que l'élargissement. Il va te falloir utiliser tes propres méninges, une variable booléenne et une boucle pour gérer également le rétrécissement. Cet exemple te montre ce que sait faite textwidth. Le reste est plus de l'esprit stratégique que du code.
Bonne chance.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

Dans l'explorateur de solution, clic droit, Nouveau, Controle utilisateur
Puis remplis l'interface et le code.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Bonjour et merci pour votre réponse.
mais justement c dans ce code que je ne vois pas bien ce que je vais faire!!
quelle propriétés/méthodes... peut-il avoir ?
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

ça fonctionne comme un module de classe normal.
Tu peux définir les propriétés personnalisées, les méthodes, ...
Tu peux faire énormément de chose, il y a pas de limitation concernant les méthodes/propriétés (si ce n'est les noms déjà réservés et la visibilité des types).

Mon site
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Bonjour,

Dans ton projet/contrôle utilisateur, commences par y ajouter les contrôles nécessaires comme tu le ferais dans une form classique. Ajoutes aussi autant de propriétés nécessaires.
A l'utilisation de ton contrôle, pratiquement aucune des propriétés standards (BackColor, ForeColor, Font, etc...) ne seront dispo', il te faut donc les rajouter à la main (un assistant existe aussi mais le code généré est imbitable, je préfère donc me le palucher complètement, mais c'est toi qui vois).

En ce qui concerne les backcolor par exemple il faut en prévoir autant que de composants utilisés DONT la couleur doit être différente.

Idem pour les évènements qui sont à pré"voir toi-même. C'est du boulot, mais c'est justement ce qui fait sa puissance. Comme le disais NHenry, il n'y a pas de limites ou presque.


Calade
j'aimerais par exemple que la largeur des TextBox et celle du controle soit egale à celle du texte contenu dans les TextBox
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

Sur l’événement Resize du UserControl:
TextBox1.Width=UserControl.Width

Comme pour une form, sans bord.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
j'aimerais par exemple que la largeur des TextBox et celle du controle soit egale à celle du texte contenu dans les TextBox

Tu tournes-là en rond, dès lors que, dans une textbox, la largeur d'affichage du texte dépend elle-même, entre autres et très précisément, de celle de la textbox !
Ta démarche n'aurait donc de sens que si tu voulais n'afficher que des sauts de ligne réels (correspondant à des vrais retours à la ligne) et ne pas laisser VB traiter, à l'affichage, des "faux" passages à la ligne pour correspondre à la largeur de la textbox.
Question (à tout hasard) : tu as bien mis à True la propriété multiline de ta textbox ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Mais je relis et m'attarde à ceci :
un Contrôle utilisateur avec deux TextBox et une Line pour désigner un nombre rationnel, qui doit pouvoir recevoir 2 entiers, un comme numérateur et l'autre comme dénominateur qu'on peut manipuler ensuite. 

qui donne à penser que tes lignes sont réelles (séparées par un vrai saut de ligne).
Si tu veux que ta textbox s'élargisse ou se rétrécisse en fonction de la largeur graphique de la ligne la plus large, il va te falloir bûcher l'utilisation de la fonction TextWidth et t'entraîner d'abord dans une textbox normale (hors usercontrol) jusqu'à en avoir la maîtrise. Ce ne sera qu'ensuite, que tu pourras penser à écrire dans le code de ton userControl.
En passant : j'ai des difficultés à comprendre la nécessité de créer un UserControl pour cela !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

si cela peu t'aider
ici
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Salut, ShayW,
Ton lien, toutefois, ne l'aidera pas tant qu'il ne saura pas faire avec un usercontrol ce qu'il ne saurait faire avec une simple textbox.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Salut
Merci chers ucfoutu et ShayW et désolé pour le retard
ce qui est de votre réponse Mr ucfoutu vous parlez d'un TextBox Multiline, peut-être ma question n'est pas précise
Alors il s'agit de 2 zones de texte l'une sous l'autre séparées avec une line(Shape) pour désigner un nombre rationnel.
et merci
pour votre lien ShayW j'ai pas su y trouvé ce que je cherche et merci une autre fois.
Désolé cher NHenry, j'ai essayé mais ça laisse la TextBox s'adapter à celle du usercontrol, alors que dans mon cas je veux le contraire et la TextBox n'a pas d'evenement Resize.
et merci
Merci Beaucoup cher ucfoutu en effet c parfait avec La methode TextWidth.
une autre fois Merci et mille merci.