[VB6] Scrollbar + Frame avec Textbox créer dynamiquement

bb181185 Messages postés 28 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 21 juillet 2006 - 23 févr. 2006 à 14:50
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 24 févr. 2006 à 11:16
Bonjour à tous,

Voilà j'ai un formulaire avec :

- une Frame, Frame1, à l'intérieur de celle-ci :
* une Autre Frame2 et à l'interieur de celle-ci :
*2 picturebox, Picture1(0) et Picture2 (0) :
* A l'interieur de la Picture1(0), il y a une Textbox, Text1(0)
* A l'interieur de la Picture2(0), il y a une TextBox, Text2(0)
* et un Label1(0) non visible
- une scrollbar vertical.

Je vous explique le principe de mon formulaire :

La frame2 et de la même hauteur et largeur que les PictureBox.
La frame1 fait tout le formulaire.

Lorsque je clique sur lancer mon application :
- le focus se met sur ma Text1(0), lorsque j'ecrit quelquechose dans ma Text1(0) il y a une ligne qui se rajoute , c'est à dire Picture1(1) avec Text1(1) à l'interieur, Picture2(1) avec Text2(1) à l'interieur et Le Label1(1). Et la taille de frame1 s'ajuste avec la 2ème ligne.


- Quand je finis de taper quelquechose dans la Text1(0) pour passer à la Text2(0), je fais tab et la j'ecris quelquechose dans la Text2(0). Et quand j'ai finis de taper dans la Text2(0), je fais tab, pour passer à la Text1(1) et ainsi de suite.

Mais le problème c'est que mon formulaire est trop petit alors j'avais penser de mettre une scrollbar veticale à coter de mes deux frames à droite.

Donc voilà ce que je veux faire :

Par exemple :
On tape :
Text1 Text2
aaaaa bbbbb
ccccc ddddd
eeeee ffffffff
......... ..........
www xxxxxx
yyyyy zzzzzzz (c'est la ligne n)
.......... ........... (et là ligne n + 1 qui est vide)

Mais dans le formulaire on voit :
Text1 Text2
aaaaa bbbbb
ccccc ddddd
eeeee ffffffff
......... ..........
www xxxxxx
yyyyy zzzzzzz (c'est la ligne n)

Et donc la ligne vide n'est pas visible et moi j'aimerai faire cela :

Text1 Text2
aaaaa bbbbb
ccccc ddddd
eeeee ffffffff
......... ..........
www xxxxxx

et lorsque l'on arrive à la dernière ligne visible, on met la dernière ligne visible tout en haut de mon frame et on voit que la scrollbar est descendus :
yyyyy zzzzzzz (c'est la ligne n)
.......... ........... (et là ligne n + 1 qui est vide)

Et ainsi on recommence.

Pouvez-vous m'aider?

Merci d'avance.

Ps : si ce n'est pas compréhensible dites le moi.

8 réponses

bb181185 Messages postés 28 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 21 juillet 2006
23 févr. 2006 à 14:53
euh j'ai oublier de dire que je voudrai faire cela lorsque le height de la frame2 et egale ou superieur à celle de la frame1.

Merci d'avance
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2006 à 16:26
salut,

voici le principe

créé une nouveau projet.

une une Form1, pose un Command1 et une Frame1



dans la Frame1, pose une VScroll1 à droite, de toute la taille de la Frame1.

dans le Frame1, pose une Picture1

dans la Picture1, pose une Text1(0)





voici le code. il devrait t'éclairer sur le fonctionnement




Option Explicit

'

Dim iIndexLoad As Integer

'

'

Private Sub Form_Load()

' redim la picture container

Picture1.Top = 0

Picture1.Height = Text1(0).Height + 50



' scroll

VScroll1.Max = Picture1.Height

VScroll1.Visible = False



' index

iIndexLoad = 0

Text1(iIndexLoad).Top = 0

Text1(iIndexLoad).Text = CStr (iIndexLoad)

End Sub

'

'

Private Sub Command1_Click()

' load

iIndexLoad = iIndexLoad + 1

Load Text1(iIndexLoad)



' place

Text1(iIndexLoad).Top = Text1(iIndexLoad - 1).Top + Text1(iIndexLoad).Height + 50

Text1(iIndexLoad).Text = CStr (iIndexLoad)

Text1(iIndexLoad).Visible = True



' pic container

Picture1.Height = Text1(iIndexLoad).Top + Text1(0).Height + 50



' scroll

VScroll1.Max = Picture1.Height

If Picture1.Height > Frame1.Height Then

VScroll1.Visible = True

VScroll1.Value = VScroll1.Max

End If

End Sub



Private Sub VScroll1_Change()

If VScroll1.Visible Then Picture1.Top = Frame1.Height - Picture1.Height

End Sub





<small> Coloration
syntaxique automatique [AFCK]</small>



pour des raisons de simplicité de relecture, je te conseille tout de même de te faire un usercontrol.

il doit y en avoir sur VbF (container avec Scroll)



++

PCPT [AFCK]
0
bb181185 Messages postés 28 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 21 juillet 2006
24 févr. 2006 à 08:08
J'ai tester ton code mais il y a un petit problème je ne peux pas bouger ma scrollbar. Est-Ce normal?

Merci d'avance.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2006 à 10:10
la scroll est aussi à coder.
0

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

Posez votre question
bb181185 Messages postés 28 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 21 juillet 2006
24 févr. 2006 à 10:17
Comment tu fais pour coder la scroll?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2006 à 10:53
tu joues avec un booléen.

exemple (déclaration générale) Dim bScrollManuel as boolean





Private Sub VScroll1_Change()

if bScrollManuel then exit sub

If VScroll1.Visible Then Picture1.Top = Frame1.Height - Picture1.Height
End Sub



et dans l'évènement Scroll

bScrollManuel=true

et la tu changes le Picture1.Top en fonction de VScroll1.Value

bScrollManuel=False
0
bb181185 Messages postés 28 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 21 juillet 2006
24 févr. 2006 à 11:07
Mais à quoi sert le booleen?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2006 à 11:16
tu vois un booléen qui, s'il est TRUE, fait sortir d'une procédure.

faut pas chercher énormément si?

en scrollant, le .Value va changer, déclenchant le Change (et donc le code qui est écrit.. en DOUBLE sur ton topic ;) )
0
Rejoignez-nous