Aide sur la création d'un composant en VB6 !!

Résolu
kari63 - 21 nov. 2012 à 23:08
 kari63 - 22 nov. 2012 à 22:30
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
22 nov. 2012 à 22:16
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
3
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 156
21 nov. 2012 à 23:34
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
0
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 ?
0
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 156
22 nov. 2012 à 09:21
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
22 nov. 2012 à 14:41
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
0
j'aimerais par exemple que la largeur des TextBox et celle du controle soit egale à celle du texte contenu dans les TextBox
0
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 156
22 nov. 2012 à 18:40
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
22 nov. 2012 à 19:03
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
22 nov. 2012 à 19:15
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
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
22 nov. 2012 à 19:54
Salut

si cela peu t'aider
ici
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
22 nov. 2012 à 20:46
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
0
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.
0
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
0
Merci Beaucoup cher ucfoutu en effet c parfait avec La methode TextWidth.
une autre fois Merci et mille merci.
0
Rejoignez-nous