Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1372 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°658434
zytrahus5
wait what?
Posté le 28-02-2004 à 12:47:36  profilanswer
 

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
mood
Publicité
Posté le 28-02-2004 à 12:47:36  profilanswer
 

n°658475
vinceexten​se
Posté le 28-02-2004 à 13:52:17  profilanswer
 

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:

n°658482
zytrahus5
wait what?
Posté le 28-02-2004 à 13:57:33  profilanswer
 

[: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
n°658493
zytrahus5
wait what?
Posté le 28-02-2004 à 14:04:01  profilanswer
 

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


---------------
http://www.zytratech.com
n°659142
zytrahus5
wait what?
Posté le 29-02-2004 à 11:53:07  profilanswer
 

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
n°659164
zytrahus5
wait what?
Posté le 29-02-2004 à 12:17:47  profilanswer
 

up :cry:


---------------
http://www.zytratech.com
n°659219
zytrahus5
wait what?
Posté le 29-02-2004 à 13:02:36  profilanswer
 

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
n°659222
zytrahus5
wait what?
Posté le 29-02-2004 à 13:14:39  profilanswer
 

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


---------------
http://www.zytratech.com
n°659228
rosco
Posté le 29-02-2004 à 13:24:49  profilanswer
 

:whistle:

n°659230
zytrahus5
wait what?
Posté le 29-02-2004 à 13:26:39  profilanswer
 

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
mood
Publicité
Posté le 29-02-2004 à 13:26:39  profilanswer
 

n°659251
mareek
Et de 3 \o/
Posté le 29-02-2004 à 13:57:25  profilanswer
 

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
n°659258
zytrahus5
wait what?
Posté le 29-02-2004 à 14:04:44  profilanswer
 

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
n°659263
bossamiral​2
Ctrl+Alt+Del
Posté le 29-02-2004 à 14:07:56  profilanswer
 

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 .....

n°659273
zytrahus5
wait what?
Posté le 29-02-2004 à 14:14:19  profilanswer
 

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
n°659274
zytrahus5
wait what?
Posté le 29-02-2004 à 14:14:34  profilanswer
 

donc je vois trop pas [:unicode]


---------------
http://www.zytratech.com
n°659277
bossamiral​2
Ctrl+Alt+Del
Posté le 29-02-2004 à 14:16:00  profilanswer
 

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

n°659278
zytrahus5
wait what?
Posté le 29-02-2004 à 14:16:31  profilanswer
 

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


---------------
http://www.zytratech.com
n°659299
mareek
Et de 3 \o/
Posté le 29-02-2004 à 14:26:06  profilanswer
 

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
n°659304
zytrahus5
wait what?
Posté le 29-02-2004 à 14:27:19  profilanswer
 

j'essaie de suite :)


---------------
http://www.zytratech.com
n°659315
zytrahus5
wait what?
Posté le 29-02-2004 à 14:34:46  profilanswer
 

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
n°659323
mareek
Et de 3 \o/
Posté le 29-02-2004 à 14:40:57  profilanswer
 

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
n°659333
zytrahus5
wait what?
Posté le 29-02-2004 à 14:59:19  profilanswer
 

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
n°659335
mareek
Et de 3 \o/
Posté le 29-02-2004 à 15:08:12  profilanswer
 

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
n°659344
zytrahus5
wait what?
Posté le 29-02-2004 à 15:18:34  profilanswer
 

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
n°659345
zytrahus5
wait what?
Posté le 29-02-2004 à 15:21:07  profilanswer
 

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


---------------
http://www.zytratech.com
n°659347
mareek
Et de 3 \o/
Posté le 29-02-2004 à 15:24:10  profilanswer
 

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
n°659349
zytrahus5
wait what?
Posté le 29-02-2004 à 15:26:07  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
[PHP] Safe mode et outils graphiqueMRTG - Rrdtool Graphique
[resolu]cast de composant graphiqueErreur lib graphique linux
Applet : Probleme graphique entre JV Microsoft et JV SUNinterface graphique sous Windows
interface graphiqueDessiner un gadget dans un Graphics2D
classer du valeur d'un attributapplication graphique en C#
Plus de sujets relatifs à : [VB] - Dessiner un graphique - Boucler sur l'indice d'un attribut ? oO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR