Lenteur <Msflexgrid>

Résolu
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006 - 26 juil. 2006 à 17:14
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006 - 30 juil. 2006 à 20:46
Bonjour, j'utilise msflexgrid pour un programme d'affichage de données, je trouve que ce controle est tres lent, n'y a t'il pas un moyen d'optimiser sa rapidité , ou bien quel control puis je utiliser pour mon affichage.
J'ai fait l'essais avec un "textbox" indicé cela fonctionne mieux mais j'ai 18 ligne de 30 cases à gérer

Vos conseils seront les bienvenus.
A++
Rémi

10 réponses

rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
26 juil. 2006 à 18:46
Bonjour a tous,


MSFlexGrid1.Redraw = False


....Ton code de MAJ du MSFlexGrid et


MSFlexGrid1.Redraw = True

Normalement tu vas gagner en vitesse de chargement...

A+
ryl...
1
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 17:44
Salut, peut-être une listview ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 juil. 2006 à 17:55
salut,
la listview peut en effet convenir.
celà dit avec 540 cellules, la msflexgrid ne devrait pas être lente...

post le bout de code, peut-être peut-il être optimisé...

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006
26 juil. 2006 à 18:09
Je me sert du MSFLEXGRID pour afficher le décodage de messages arrivant  sur le port série, le décodage prend un certain temps mais il me faut encore plus pour les afficher sur le control. et j'arrive a une saturation du buffer d'entrée du port ( taille 16000). je cherche donc une méthode plus rapide d'affichage de ces données
30 valeurs par ligne.

 J' ai fait l'essais sur un programme de gestion DMX sur 64 cases de valeur le msflexfrid prends 800 ms, la gestion des 64 labels 10 ms.
Merci de vos réponses
Rémi
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juil. 2006 à 18:17
Salut,

c'est quoi ton code actuel pour l'insertion des données dans ton FlexGrid ?

@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce sondage
Merci de prendre le temps de lire le Règlement CS    http://www.smileycentral.com/?partner=ZSzeb008_ZNxdm414YYFR
0
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006
26 juil. 2006 à 18:26
Le voici pour le controleur Dmx, j'ai les instructions de gestion du flex en commentaire pour analyser la différence de temps de traitement de cette sub qui est appelé par le timer toutes les 20 ms.
J'utilise la même méthode dans les deux cas.
Merci
Rémi
0
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006
26 juil. 2006 à 18:27
erreur le voici
Private Sub Mise_a_Jour()

timedeb = Time

Call chenillard

n = 0

Do Until n = 64

Select Case n

Case 0 To 11

DMXoutput(ValCanal(n)) = DMXBO(n) And DMXOff(n) And (DMXAudio(n) Or DMXFader(n) Or DMXEFFET(n) Or DMXchen(n) Or DMXAlea(n) Or MinLevel Or DMXPF(n))

If DMXoutput(ValCanal(n)) > MasterLevel Then DMXoutput(ValCanal(n)) = MasterLevel

DmxOut(n) = DMXoutput(ValCanal(n))

Picture1(n).BackColor = RGB(0, DmxOut(n), 0)

TextMaxLevel(4).Text = Time - timedeb

'MSFlexGrid1.Row = 1

'MSFlexGrid1.Col = n + 1

'MSFlexGrid1.Text = DMXoutput(n)

'MSFlexGrid1.Row = 3

'MSFlexGrid1.Text = DMXoutput(n + 32)

Case 12 To 15

DMXoutput(ValCanal(n)) = DMXBO(n) And DMXOff(n) And (DMXAudio(n) Or DMXFader(n) Or DMXEFFET(n) Or DMXchen(n) Or DMXAlea(n) Or DMXPF(n))

If DMXoutput(ValCanal(n)) > MasterLevel Then DMXoutput(ValCanal(n)) = MasterLevel

DmxOut(n) = DMXoutput(ValCanal(n))

Picture1(n).BackColor = RGB(0, DmxOut(n), 0)

'MSFlexGrid1.Row = 1

'MSFlexGrid1.Col = n + 1

'MSFlexGrid1.Text = DMXoutput(n)

'MSFlexGrid1.Row = 3

'MSFlexGrid1.Text = DMXoutput(n + 32)

Case 16 To 31

DMXoutput(ValCanal(n)) = DMXBO(n) And (DMXEFFET(n) Or DMXPF(n))

'MSFlexGrid1.Row = 1

'MSFlexGrid1.Col = n + 1

'MSFlexGrid1.Text = DMXoutput(n)

'MSFlexGrid1.Row = 3

'MSFlexGrid1.Text = DMXoutput(n + 32)

Case 32

DMXoutput(n) = Form1.DmxChan1

Case 33

DMXoutput(n) = Form1.DmxChan2

Case 34

DMXoutput(n) = Form1.DmxChan3

Case 35

DMXoutput(n) = Form1.DmxChan4

Case 36

DMXoutput(n) = Form1.DmxChan5

Case 37

DMXoutput(n) = Form1.DmxChan6

Case 38

DMXoutput(n) = Form1.DmxChan7

Case 39

DMXoutput(n) = Form1.DmxChan8

Case 40

DMXoutput(n) = Form1.DmxChan9

Case 41

DMXoutput(n) = Form1.DmxChan10

End Select

n = n + 1

Loop

'For n = 0 To 31

' MSFlexGrid1.Row = 1

' MSFlexGrid1.Col = n + 1

' MSFlexGrid1.Text = DMXoutput(n)

' MSFlexGrid1.Row = 3

' MSFlexGrid1.Text = DMXoutput(n + 32)

'Next

TextMaxLevel(2).Text = Time - timedeb

End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 juil. 2006 à 18:48
ce genre de syntaxe change quelque chose?

'case 0 to 11
        MSFlexGrid1.textmatrix(1, n + 1).Text = DMXoutput(n)
        MSFlexGrid1.textmatrix(3, n + 1).Text = DMXoutput(n + 32)

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 juil. 2006 à 18:50
exact rylryl, on peut aussi simplement passer en visible=false (bonne idée).
ne pas oublier un doevents après le false.
0
cs_jcremi Messages postés 8 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 9 août 2006
30 juil. 2006 à 20:46
Merci  de vos réponses, j'ai rajouter les instructions
"MSFlexGrid1.Redraw = False/True" et ca marche nikel, j'ai eu le meme
soucis sur VBa avec la mise a jour du tableau.

Je ne connaissais pas cette fonction sur VB6.

Merci encore de votre aide

Cordialement

Rémi
0
Rejoignez-nous