[VB] - Dessiner un graphique - Boucler sur l'indice d'un attribut ? oO

- Dessiner un graphique - Boucler sur l'indice d'un attribut ? oO [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 28-02-2004 à 12:47:36    

http://stephen.mounioloux.free.fr/pbvb.PNG
 
 
 [:almar]  
 
voilà à quoi se résume mon probleme :'(


Message édité par zytrahus5 le 29-02-2004 à 13:14:34

---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-02-2004 à 12:47:36   

Reply

Marsh Posté le 28-02-2004 à 13:52:17    

Ben tu as les instruction line, pset et circle
Tu peux aussi utiliser l'api des windows pour faire des trucs plus evolué, comme des polygones ou des courbes de bézier etc.
 :sol:

Reply

Marsh Posté le 28-02-2004 à 13:57:33    

[:mr couleur] merci, j'ai réussi a me servir de line, je l'ai mise dans une picturebox.
 
là où je butte maintenant c'est sur l'avancement du graphique :
 
10 valeurs par exemple
chaque seconde, j'ajoute une valeur et j'en enleve une.
 
mais je ne sais pas comment gérer les intéruptions "temporelle" pour en gros actualiser chaque seconde par exemple ? :|


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-02-2004 à 14:04:01    

je vais essayer d'utilise le timer [:izz]


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 11:53:07    

Bon je m'en suis sorti pour le timer...
 
maintenant j'ai un REsoucis pour le graphique.
 
c'est pas général au graphique le soucis, je m'explique :
 
 
j'ai créé une ligne (ça pourrait etre n'importe quoi, une textbox ou autre, qu'importe).
 
je peux modifier ma ligne de cette maniere dans le code :
 

Code :
  1. line1.X1 = 1300
  2. line1.X2 = 1300
  3. line1.Y1 = 1300
  4. line1.Y2 = 1300


 
là ça me fait un point, on va dire que ça me permet d'initialiser ma ligne, qu'importe également.
 
 
le truc c'est que j'ai N lignes et je voudrais éviter de me taper a chaque N fois les 4 lignes de l'initialisation. (idem pour le contenu du programme, ensuite...)
 

Donc je voudrais savoir s'il est possible de boucler sur l'indice d'un attribut ???

 
 
en gros est ce qu'il est possible de faire un truc du genre :
 

Code :
  1. For i=1 To Nb
  2. Line,i.X1 = 1300
  3. Line,i.X2 = 1300
  4. Line,i.Y1 = 1300
  5. Line,i.Y2 = 1300
  6. Next i


 
 
merci pour le coup de main [:zytrahus5]  [:cutter]
 
 
 
 
derniere chose, est ce que c'est possible de créer une ligne (j'utilise VB6) directement via le code ? sans la crééer "à la souris dans l'objet" ?


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 12:17:47    

up :cry:


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 13:02:36    

Code :
  1. Private Sub Form_Load()
  2. Dim Line1(100) As Line
  3. Dim i As Integer
  4. For i = 0 To 100
  5. Line1(i).X1 = 1300
  6. Line1(i).X2 = 1300
  7. Line1(i).Y1 = 1300
  8. Line1(i).Y2 = 1300
  9. Next i
  10. End Sub


 
ça me sort une runtime error 91  [:unicode]
 
 
mais qu'est ce quiva pas :'( :cry:


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 13:14:39    

http://stephen.mounioloux.free.fr/pbvb.PNG
 
 
 [:almar]  
 
voilà à quoi se résume mon probleme :'(


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 13:24:49    

:whistle:

Reply

Marsh Posté le 29-02-2004 à 13:26:39    

que je fassse une Line ou une textbox c le meme probleme
 
par contre si je fais un integer ça marche bien...
 
 
:??:


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 13:26:39   

Reply

Marsh Posté le 29-02-2004 à 13:57:25    

zytrahus5 a écrit :

Code :
  1. Private Sub Form_Load()
  2. Dim Line1(100) As Line
  3. Dim i As Integer
  4. For i = 0 To 100 :sweat:
  5. Line1(i).X1 = 1300
  6. Line1(i).X2 = 1300
  7. Line1(i).Y1 = 1300
  8. Line1(i).Y2 = 1300
  9. Next i
  10. End Sub


 
ça me sort une runtime error 91  [:unicode]
 
 
mais qu'est ce quiva pas :'( :cry:


Quand tu fais "Dim Line1(100) As Line", tu définit un tableau de 100 éléments (par défaut, de 0 à 99) don quand tu fais "For i = 0 To 100", tu dépasse forcement de ton tableau.  
Et puis tu ne fait jamais de new sur tes objets line, donc forcement ça merde.
 
le code correct serait:

Code :
  1. Private Sub Form_Load()
  2.   Dim Line1(100) As Line
  3.   Dim i As Integer
  4.   For i = 0 To 99
  5.     Set Line1(i) = new Line
  6.     Line1(i).X1 = 1300
  7.     Line1(i).X2 = 1300
  8.     Line1(i).Y1 = 1300
  9.     Line1(i).Y2 = 1300
  10.   Next i
  11. End Sub


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 29-02-2004 à 14:04:44    

merci pour ta réponse :)
 
j'avais essayé un truc du genre, surement avec la mauvaise syntaxe...
 
bref, j'ai essayé ton truc, et il me sort une erreur aussi :/
 
http://stephen.mounioloux.free.fr/pbvb2.PNG
 


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:07:56    

c'est pas une histoire d'initialisation du mode graphique. Sous net tu dois écrire un truc comme  
dim g as graphics
 
dans le form_load
g= me.creategraphics() ' on crée un dessin dans la forme
g.line .....

Reply

Marsh Posté le 29-02-2004 à 14:14:19    

bossamiral2 a écrit :

c'est pas une histoire d'initialisation du mode graphique. Sous net tu dois écrire un truc comme  
dim g as graphics
 
dans le form_load
g= me.creategraphics() ' on crée un dessin dans la forme
g.line .....

bah j'arrive à créer une ligne "à la main" (a la souris) et lancer le programme et là elle apparait...


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:14:34    

donc je vois trop pas [:unicode]


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:16:00    

Désolé le vb.6 c'est vraiment pas mon truc

Reply

Marsh Posté le 29-02-2004 à 14:16:31    

[:mr couleur] c pas le mien non plus [:chimist]


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:26:06    

zytrahus5 a écrit :

bah j'arrive à créer une ligne "à la main" (a la souris) et lancer le programme et là elle apparait...


essaye d'utiliser les méthodes décrites dans ce topic:
http://forum.hardware.fr/hardwaref [...] -45486.htm


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 29-02-2004 à 14:27:19    

j'essaie de suite :)


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:34:46    

bon j'ai bien lu le truc c'est exactement ce que je veux faire, je dois certainement pas faire les choses en ordre parce que ça ne marche toujours pas :/
 
 
 

Code :
  1. Private Sub Form_Load()
  2.     Dim Line1(100) As Line
  3.     Dim i As Integer
  4.  
  5.    For i = 0 To 99
  6.       me.Controls.Add("Line","Line1" )
  7.       Load Line1(i)
  8.       Line1(i).X1 = 1300
  9.       Line1(i).X2 = 3000
  10.       Line1(i).Y1 = 1300
  11.       Line1(i).Y2 = 1300
  12.     Next i
  13.   End Sub


 
la "multiplication" de mon objet je dois la faire a quel moment ?


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 14:40:57    

Le plus simple c'est de créer un ligne à la main et ensuite de la dupiquer via la commande "load line1(i)".
 
là tu as un peu tout mélangé, il ne faut pas faire de load après un me.controls.add et tu ne doit pas déclarer de tableau de ton objet graphique quand tu fait du chargement dynamique


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 29-02-2004 à 14:59:19    

bon je suis royallement paummé :lol:
 
quelle misere :cry: pourtant ça allait bien jusque là :'(
 
alors, je créé une ligne a la main ?
 
elle s'appelle par défaut : "Line1"
 
comment la dupliquer ? parce que y a des histoires de (i) qui apparaissent, il transforme en tableau tout seul ? :??:


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 15:08:12    

Je reprends depuis le début:
-Tu crée ta ligne à la min
-Tu lui donnes un petit nom (dans mon exemple on l'appellera MaLigne)
-Tu met 0 dans la propriété 'Index' de MaLigne (dans la fenêtre propriétés). Là sans t'en rendre compte tu vien de créer une collection de controles.
-ensuite tu tape le code suivant:

Code :
  1. Private Sub Form_Load()
  2.      Dim i As Integer
  3.      
  4.      For i = 1 To 100
  5.         Load MaLigne(i)
  6.         MaLigne(i).X1 = 1300
  7.         MaLigne(i).X2 = 3000
  8.         MaLigne(i).Y1 = 1300
  9.         MaLigne(i).Y2 = 1300
  10.       Next i
  11.     End Sub


 
EDIT: enfin dans ce cas précis, ton code ne sert pas à grand chose vu que tu va tracer 100 lignes superposées


Message édité par mareek le 29-02-2004 à 15:10:11

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 29-02-2004 à 15:18:34    

merci pour ton aide, je regarde ça de suite.
 
oui a l'initialisation elles seront superposées, c'est dans une autre partie du programme (supposé tracer un graphe :o ) que je fais les mods


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 15:21:07    

ça marche [:46249910] merci pour le coup de main [:romf]


---------------
http://www.zytratech.com
Reply

Marsh Posté le 29-02-2004 à 15:24:10    

Tu veux dessiner quoi en fait ? parce que si c'est pour faire des graphique genres histogrames, camenbert, courbes etc... il y a le composant VB chart qui marche pas mal.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 29-02-2004 à 15:26:07    

arf si j'avais su, j'en ai entendu parlé mais ça semblait bien compliquer :/
 
c'est pour tracer des courbes (simples segments de droites reliant des points)


---------------
http://www.zytratech.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed