Bonjour,
voilà je reviens faire un peu de VB6 (mon 1er amour) après avoir fait pas mal de C++ et autres PHP ces dernieres années, donc du coups quand je veux faire un truc qui "ressemble" à de la POO en VB6, je suis un peu rouillé, donc je demande votre aide.
Voilà avant tout je vous explique le besoin :
j'ai une appli avec plein de controles differents (dont des controles utilisateurs:vbaccelerator) et il faut que je dessine une simple bordure (type shape) et il n'est pas questions d'utiliser les bordures 3D standard (c'est non negociable...)
tous les controles ont des proprietes left,top, width...
ils sont dynamique (peuvent changer de taille/place) mais je sais quand c'est fini (quand ils ne bougent plus).
Maintenant la réalisation :
je pars sur l'utilisation du shape (qu'il faut mettre autour des controles en questions).
Alors, me voilà partie dans un délire, ou je me serais bien vu créer une classe CBordure, avec une methode ("function" ont dit en VB6 hein) pour assigner mon objet bordure à mon controle et enfin une deuxieme methode pour mettre a jour le dessin (disp). la classe gererait un shape qu'il aurait créée dynamiquement (lors du assigne() ) et dont il possitionnerait au bon endroit et avec les bonnes taille lors du disp()
en gros un truc qu'on pourrait utiliser de la maniere suivante :
bon, voilà... il ne manque plus que std::vect pour que ca ressemble au C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 bord1 = NEW CBordure bord1.assigne(ListView1) '... et puis... bord1.disp()il ne faut pas rever non plus...
bon, me voilà parti..
je crée la classe, je crée la fonction assigne...
mais là, le drame.. ha ben oui en VB6 le chargement dynamique d'objet (donc de shape) ca ne passe pas avec un new ? javais oublié ca, bon il y a "load" pour celà...
ha oui il faudrait aussi lui passer le form où l'afficher ?... bon bref, je coince, il y a quelques année j'aurai mis peut être deux ou trois heure, là j'ai même un doute sur la faisabilité.
voilà, un brouillon de ce qu'il y a dans la classe : (attention c'est pas joli joli..)
Ps : je crains de ne pas pouvoir faire de LOAD en dehors d'un module de form?....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private obj As Object Private hsh As Shape Private Sub Class_Terminate() Unload hsh ' on nettoye... End Sub Public Function assigne(o, f As Form) obj = o hsh = load f.shape(n) ' a gerer : un compteur <n> pour load End Function Public Function disp() hsh.Left = o.Left - 15 ' contour autour (15twips=1px) hsh.Top = o.Top - 15 ' pour l'instant je trav en twips hsh.Width = o.Width + 30 ' on vera par la suite... hsh.Height = o.Height + 30 hsh.Visible = True End Function
merci de vos conseils et votre aide.
Partager