Dans mon projet, je crée des shapes avec des index de valeurs aléatoires (1,
10, 55.........) et je ne peux pas faire autrement...(j'utilise la commande
load shape(x))
Comment toutes les supprimer sans problème ???
J'ai essayé avec :
for i = 1 to shape.count
unload shape.item(i)
next i
Malheureusement la propriété item est la même chose qu'à l'index donc
certaines shapes ne sont pas supprimées....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thierry BERTRAND
unload shape(i) modifie la valeur de shape.count donc au premier passage, shape.count vaut 100 (par exemple) et après le unload de shape(1), il ne vaut plus que 99 Donc tu ne décharge que la moitié de tes shape.
donc en général quand j'effectue des unload de controles, je le fais en décrémentant
dim Nb as integer dim I as integer
nb=shape.count for i=nb to 1 step -1 unload shape(i) next i
essaye-s-y et dis nous.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421aff0f$0$3131$
Bonjour
Dans mon projet, je crée des shapes avec des index de valeurs aléatoires
(1,
10, 55.........) et je ne peux pas faire autrement...(j'utilise la
commande
load shape(x))
Comment toutes les supprimer sans problème ???
J'ai essayé avec : for i = 1 to shape.count unload shape.item(i) next i
Malheureusement la propriété item est la même chose qu'à l'index donc certaines shapes ne sont pas supprimées....
merci de me renseigner...
--
unload shape(i) modifie la valeur de shape.count
donc au premier passage, shape.count vaut 100 (par exemple)
et après le unload de shape(1), il ne vaut plus que 99
Donc tu ne décharge que la moitié de tes shape.
donc en général quand j'effectue des unload de controles, je le fais en
décrémentant
dim Nb as integer
dim I as integer
nb=shape.count
for i=nb to 1 step -1
unload shape(i)
next i
essaye-s-y et dis nous.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:
421aff0f$0$3131$8fcfb975@news.wanadoo.fr...
Bonjour
Dans mon projet, je crée des shapes avec des index de valeurs aléatoires
(1,
10, 55.........) et je ne peux pas faire autrement...(j'utilise la
commande
load shape(x))
Comment toutes les supprimer sans problème ???
J'ai essayé avec :
for i = 1 to shape.count
unload shape.item(i)
next i
Malheureusement la propriété item est la même chose qu'à l'index donc
certaines shapes ne sont pas supprimées....
unload shape(i) modifie la valeur de shape.count donc au premier passage, shape.count vaut 100 (par exemple) et après le unload de shape(1), il ne vaut plus que 99 Donc tu ne décharge que la moitié de tes shape.
donc en général quand j'effectue des unload de controles, je le fais en décrémentant
dim Nb as integer dim I as integer
nb=shape.count for i=nb to 1 step -1 unload shape(i) next i
essaye-s-y et dis nous.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421aff0f$0$3131$
Bonjour
Dans mon projet, je crée des shapes avec des index de valeurs aléatoires
(1,
10, 55.........) et je ne peux pas faire autrement...(j'utilise la
commande
load shape(x))
Comment toutes les supprimer sans problème ???
J'ai essayé avec : for i = 1 to shape.count unload shape.item(i) next i
Malheureusement la propriété item est la même chose qu'à l'index donc certaines shapes ne sont pas supprimées....
merci de me renseigner...
--
TouTi
Bonjour Thierry
donc en général quand j'effectue des unload de controles, je le fais en décrémentant dim Nb as integer dim I as integer nb=shape.count for i=nb to 1 step -1 unload shape(i) next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index sont supérieurs à la valeur du nombre de shape
exemple : * Je dois créer une série de shape : shape(10), shape(150), shape(257) * Si je détermine le nombre total de shape : shape.count = 3 * La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas à mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit l'index...
Bonjour Thierry
donc en général quand j'effectue des unload de controles, je le fais en
décrémentant
dim Nb as integer
dim I as integer
nb=shape.count
for i=nb to 1 step -1
unload shape(i)
next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index
sont supérieurs à la valeur du nombre de shape
exemple :
* Je dois créer une série de shape : shape(10), shape(150), shape(257)
* Si je détermine le nombre total de shape : shape.count = 3
* La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas à
mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit
l'index...
donc en général quand j'effectue des unload de controles, je le fais en décrémentant dim Nb as integer dim I as integer nb=shape.count for i=nb to 1 step -1 unload shape(i) next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index sont supérieurs à la valeur du nombre de shape
exemple : * Je dois créer une série de shape : shape(10), shape(150), shape(257) * Si je détermine le nombre total de shape : shape.count = 3 * La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas à mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit l'index...
Thierry BERTRAND
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker les index des shapes créées pour pouvoir ensuite les détruires.
Définit une table pour mémoriser les index.
Dim tblIndex() as integer
dans le form load ou dans la proc main faire
redim tblindex(0)
pour intialiser la table à l'indice 0, cela facilite ensuite
definir une proc LoadShape et une autre UnloadShape
Public sub LoadShape(byval index as integer) load shape(index) redim preserve tblindex(ubound(tblindex)+1) tblindex(ubound(tblindex))=index end sub
Public sub UnloadShape(byval index as integer) Dim I as integer
if index=0 then for i=1 to ubound(tblindex) unload shape(tblindex(i)) next i redim tblindex(0) else unload shape(tblindex(index)) for i=index to ubound(tblindex)-1 tblindex(i)=tblindex(i+1) next i redim preserve tblindex(ubound(tblindex)-1) end if end sub
remplacer toutes les instructions load shape(i) par LoadShape(i) et pour détruire les shapes, soit faire UnloadShape(0) -> elles seront toutes supprimées soit faire UnloadShape(i) -> la ieme uniquement sera supprimée
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421b0a9d$0$3125$
Bonjour Thierry
> donc en général quand j'effectue des unload de controles, je le fais en > décrémentant > dim Nb as integer > dim I as integer > nb=shape.count > for i=nb to 1 step -1 > unload shape(i) > next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index sont supérieurs à la valeur du nombre de shape
exemple : * Je dois créer une série de shape : shape(10), shape(150), shape(257) * Si je détermine le nombre total de shape : shape.count = 3 * La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas
à
mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit l'index...
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker
les index des shapes créées pour pouvoir ensuite les détruires.
Définit une table pour mémoriser les index.
Dim tblIndex() as integer
dans le form load ou dans la proc main faire
redim tblindex(0)
pour intialiser la table à l'indice 0, cela facilite ensuite
definir une proc LoadShape et une autre UnloadShape
Public sub LoadShape(byval index as integer)
load shape(index)
redim preserve tblindex(ubound(tblindex)+1)
tblindex(ubound(tblindex))=index
end sub
Public sub UnloadShape(byval index as integer)
Dim I as integer
if index=0 then
for i=1 to ubound(tblindex)
unload shape(tblindex(i))
next i
redim tblindex(0)
else
unload shape(tblindex(index))
for i=index to ubound(tblindex)-1
tblindex(i)=tblindex(i+1)
next i
redim preserve tblindex(ubound(tblindex)-1)
end if
end sub
remplacer toutes les instructions load shape(i) par LoadShape(i)
et pour détruire les shapes,
soit faire UnloadShape(0) -> elles seront toutes supprimées
soit faire UnloadShape(i) -> la ieme uniquement sera supprimée
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:
421b0a9d$0$3125$8fcfb975@news.wanadoo.fr...
Bonjour Thierry
> donc en général quand j'effectue des unload de controles, je le fais en
> décrémentant
> dim Nb as integer
> dim I as integer
> nb=shape.count
> for i=nb to 1 step -1
> unload shape(i)
> next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index
sont supérieurs à la valeur du nombre de shape
exemple :
* Je dois créer une série de shape : shape(10), shape(150), shape(257)
* Si je détermine le nombre total de shape : shape.count = 3
* La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas
à
mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit
l'index...
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker les index des shapes créées pour pouvoir ensuite les détruires.
Définit une table pour mémoriser les index.
Dim tblIndex() as integer
dans le form load ou dans la proc main faire
redim tblindex(0)
pour intialiser la table à l'indice 0, cela facilite ensuite
definir une proc LoadShape et une autre UnloadShape
Public sub LoadShape(byval index as integer) load shape(index) redim preserve tblindex(ubound(tblindex)+1) tblindex(ubound(tblindex))=index end sub
Public sub UnloadShape(byval index as integer) Dim I as integer
if index=0 then for i=1 to ubound(tblindex) unload shape(tblindex(i)) next i redim tblindex(0) else unload shape(tblindex(index)) for i=index to ubound(tblindex)-1 tblindex(i)=tblindex(i+1) next i redim preserve tblindex(ubound(tblindex)-1) end if end sub
remplacer toutes les instructions load shape(i) par LoadShape(i) et pour détruire les shapes, soit faire UnloadShape(0) -> elles seront toutes supprimées soit faire UnloadShape(i) -> la ieme uniquement sera supprimée
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421b0a9d$0$3125$
Bonjour Thierry
> donc en général quand j'effectue des unload de controles, je le fais en > décrémentant > dim Nb as integer > dim I as integer > nb=shape.count > for i=nb to 1 step -1 > unload shape(i) > next i
J'avais essayé mais cela ne fonctionne pas car la valeur de certain index sont supérieurs à la valeur du nombre de shape
exemple : * Je dois créer une série de shape : shape(10), shape(150), shape(257) * Si je détermine le nombre total de shape : shape.count = 3 * La bouche "for" me renvoie les valeurs 1, 2, 3 qui ne correspondent pas
à
mes index de shape
Ce qui m'intéresserait c'est d'atteindre chaque shape quelque soit l'index...
TouTi
Thierry
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker les index des shapes créées pour pouvoir ensuite les détruires. Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de valeurs (entre autre les index des shapes). Malheureusement le temps de traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de gérer(compter, récupérer les name...) des contrôles d'une form mais je ne sais plus comment faire...
Merci pour ton aide...
Thierry
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker
les index des shapes créées pour pouvoir ensuite les détruires.
Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de
valeurs (entre autre les index des shapes). Malheureusement le temps de
traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de
gérer(compter, récupérer les name...) des contrôles d'une form mais je ne
sais plus comment faire...
Si les index ne se suivent pas, il ne reste qu'une seule solution, stocker les index des shapes créées pour pouvoir ensuite les détruires. Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de valeurs (entre autre les index des shapes). Malheureusement le temps de traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de gérer(compter, récupérer les name...) des contrôles d'une form mais je ne sais plus comment faire...
Merci pour ton aide...
Thierry BERTRAND
Je ne pense pas que cela accélèrera le truc.
je ne vois que l'enum controls.
dim Ctrl as control
for each ctrl in form.controls if ctrl.name = "xx" then ... end if next
Si tu n'a pas plus de quelques dizaines de shape, je ne pense pas qu'une table pour gérer les shapes soit très lent. De toutes façon, le nombre d'éléments dans la liste "controls" sera tout aussi important. Tu économises peut être des temps de redim et de décalage d'index, mais à voir si c'est plus facile.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421b1265$0$3140$
Thierry
> Si les index ne se suivent pas, il ne reste qu'une seule solution,
stocker
> les index des shapes créées pour pouvoir ensuite les détruires. > Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de valeurs (entre autre les index des shapes). Malheureusement le temps de traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de gérer(compter, récupérer les name...) des contrôles d'une form mais je ne sais plus comment faire...
Merci pour ton aide...
Je ne pense pas que cela accélèrera le truc.
je ne vois que l'enum controls.
dim Ctrl as control
for each ctrl in form.controls
if ctrl.name = "xx" then
...
end if
next
Si tu n'a pas plus de quelques dizaines de shape, je ne pense pas qu'une
table pour gérer les shapes soit très lent.
De toutes façon, le nombre d'éléments dans la liste "controls" sera tout
aussi important. Tu économises peut être des temps de redim et de décalage
d'index, mais à voir si c'est plus facile.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:
421b1265$0$3140$8fcfb975@news.wanadoo.fr...
Thierry
> Si les index ne se suivent pas, il ne reste qu'une seule solution,
stocker
> les index des shapes créées pour pouvoir ensuite les détruires.
> Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de
valeurs (entre autre les index des shapes). Malheureusement le temps de
traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de
gérer(compter, récupérer les name...) des contrôles d'une form mais je ne
sais plus comment faire...
for each ctrl in form.controls if ctrl.name = "xx" then ... end if next
Si tu n'a pas plus de quelques dizaines de shape, je ne pense pas qu'une table pour gérer les shapes soit très lent. De toutes façon, le nombre d'éléments dans la liste "controls" sera tout aussi important. Tu économises peut être des temps de redim et de décalage d'index, mais à voir si c'est plus facile.
"TouTi" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news: 421b1265$0$3140$
Thierry
> Si les index ne se suivent pas, il ne reste qu'une seule solution,
stocker
> les index des shapes créées pour pouvoir ensuite les détruires. > Définit une table pour mémoriser les index.
En fait c'est ce que j'ai déjà : J'ai une table qui contient un grand de valeurs (entre autre les index des shapes). Malheureusement le temps de traitement est trop long...
Peut être un autre moyen : Je me rappelle qu'il existe un moyen de gérer(compter, récupérer les name...) des contrôles d'une form mais je ne sais plus comment faire...
Merci pour ton aide...
ng
Salut,
* Je dois créer une série de shape : shape(10), shape(150), shape(257)
Pour le but de l'indexation est qu'elle se fasse dans l'ordre de facon a pouvoir parcourir les controles facilement et rapidement (car un for each sur l'ensemble des controles n'est pas forcément rapide). Sinon il faut créé un tableau affectant à chaque index un autre index mais dans l'odre :
Dim tblRefIndex() As Integer
'//on le redimensionne a chaque fois en attribuant les index de manière a ce que tblRefIndex(0) = 10, tblRefIndex(1) = 150...
ensuite pour la suppression il suffit de boucler sur le tableau et de faire un Call Unload( MaShape(tblRefIndex(i)) )... à tester.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Salut,
* Je dois créer une série de shape : shape(10), shape(150), shape(257)
Pour le but de l'indexation est qu'elle se fasse dans l'ordre de facon a
pouvoir parcourir les controles facilement et rapidement (car un for each
sur l'ensemble des controles n'est pas forcément rapide). Sinon il faut
créé un tableau affectant à chaque index un autre index mais dans l'odre :
Dim tblRefIndex() As Integer
'//on le redimensionne a chaque fois en attribuant les index de manière a ce
que tblRefIndex(0) = 10, tblRefIndex(1) = 150...
ensuite pour la suppression il suffit de boucler sur le tableau et de faire
un Call Unload( MaShape(tblRefIndex(i)) )... à tester.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
* Je dois créer une série de shape : shape(10), shape(150), shape(257)
Pour le but de l'indexation est qu'elle se fasse dans l'ordre de facon a pouvoir parcourir les controles facilement et rapidement (car un for each sur l'ensemble des controles n'est pas forcément rapide). Sinon il faut créé un tableau affectant à chaque index un autre index mais dans l'odre :
Dim tblRefIndex() As Integer
'//on le redimensionne a chaque fois en attribuant les index de manière a ce que tblRefIndex(0) = 10, tblRefIndex(1) = 150...
ensuite pour la suppression il suffit de boucler sur le tableau et de faire un Call Unload( MaShape(tblRefIndex(i)) )... à tester.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Pascal B.
Voici LA solution:
Do Until Shape.Count = 1 unload Shape(Shape.Ubound) loop
Cordialement Pascal B.
"TouTi" <gelapplication[Nospam]@tiscali.fr> wrote in message news:421aff0f$0$3131$ | Bonjour | | Dans mon projet, je crée des shapes avec des index de valeurs aléatoires (1, | 10, 55.........) et je ne peux pas faire autrement...(j'utilise la commande | load shape(x)) | | Comment toutes les supprimer sans problème ??? | | J'ai essayé avec : | for i = 1 to shape.count | unload shape.item(i) | next i | | Malheureusement la propriété item est la même chose qu'à l'index donc | certaines shapes ne sont pas supprimées.... | | merci de me renseigner... | | -- | | |
Voici LA solution:
Do Until Shape.Count = 1
unload Shape(Shape.Ubound)
loop
Cordialement
Pascal B.
"TouTi" <gelapplication[Nospam]@tiscali.fr> wrote in message news:421aff0f$0$3131$8fcfb975@news.wanadoo.fr...
| Bonjour
|
| Dans mon projet, je crée des shapes avec des index de valeurs aléatoires (1,
| 10, 55.........) et je ne peux pas faire autrement...(j'utilise la commande
| load shape(x))
|
| Comment toutes les supprimer sans problème ???
|
| J'ai essayé avec :
| for i = 1 to shape.count
| unload shape.item(i)
| next i
|
| Malheureusement la propriété item est la même chose qu'à l'index donc
| certaines shapes ne sont pas supprimées....
|
| merci de me renseigner...
|
| --
|
|
|
Do Until Shape.Count = 1 unload Shape(Shape.Ubound) loop
Cordialement Pascal B.
"TouTi" <gelapplication[Nospam]@tiscali.fr> wrote in message news:421aff0f$0$3131$ | Bonjour | | Dans mon projet, je crée des shapes avec des index de valeurs aléatoires (1, | 10, 55.........) et je ne peux pas faire autrement...(j'utilise la commande | load shape(x)) | | Comment toutes les supprimer sans problème ??? | | J'ai essayé avec : | for i = 1 to shape.count | unload shape.item(i) | next i | | Malheureusement la propriété item est la même chose qu'à l'index donc | certaines shapes ne sont pas supprimées.... | | merci de me renseigner... | | -- | | |
TouTi
> Do Until Shape.Count = 1 unload Shape(Shape.Ubound) loop
Ca a l'air pas mal... je vais voir cela de plus prêt...
> Do Until Shape.Count = 1
unload Shape(Shape.Ubound)
loop
Ca a l'air pas mal... je vais voir cela de plus prêt...