IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

recherche solution pour affichage ds une StringGrid....


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut recherche solution pour affichage ds une StringGrid....
    Bonjour à tous,
    j'affiche une ligne dans ma StringGrid ttes les 500ms. En même temps je fixe un maximum de lignes à afficher (par exemple 300 000), qd j'atteinds ce maximum je veux pouvoir effacer la 1ère ligne affichée et continuer à afficher la dernière ligne reçue. Comment faire ça ?
    si je fais un décalage d'une ligne vers le haut, cela me prends 100% CPU et j'aimerais l'éviter....
    Quelqu'un a-t-il une solution ?
    Merci

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    A chaque fois que tu insères, tu incrémentes un indice. Tu fait ensuite un modulo dessus, ce que te permet d'avoir l'indice d'insertion. Il ne te reste plus qu'à remplacer la ligne concernée par l'indice par la nouvelle ligne.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    mais je veux toujours pouvoir insérer à la fin de ma StringGrid....

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Faire une listbox virtuelle : propriété Style à lbVirtual.
    Puis pour les détails
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    sans passer par une listbox mais en gardant ma StringGrid ce n'est pas possible ?

  6. #6
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Citation Envoyé par steph_1
    sans passer par une listbox mais en gardant ma StringGrid ce n'est pas possible ?
    Oh désolé j'avais cru que tu parlais d'une list box. Mea culpa

    Sinon pour un string grid mon idée ne fonctionne pas... et je n'en ai pas d'autre.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Le problème vient du faite qu'une string grid ne sait pas supprimer une ligne quelquonc.Bonjour,

    Le problème vient du faite qu'une string grid ne sait pas supprimer une ligne quelconque.
    Le string ne peut supprimer que la dernière ligne. Donc si l’on veut supprimer la 1° ligne il faut décaler touts les ligne a la main puis détruire la dernière ligne.

    Dans votre cas la destruction est inutile puisque vous allez remplir la dernière ligne avec de nouvelles valeurs.

  8. #8
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut Re: recherche solution pour affichage ds une StringGrid....
    Citation Envoyé par steph_1
    si je fais un décalage d'une ligne vers le haut, cela me prends 100% CPU et j'aimerais l'éviter....
    Comment fais-tu ? C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyStringGrid .Rows .Delete (0);
    qui te manges tout ton CPU ?
    Roland

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    si je fais des décalages de lignes vers le haut, avec 300 000 lignes ça me prend 100% CPU....
    cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyStringGrid .Rows .Delete (0);
    : ne marche pas

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Malheureusement il n'y a pas d'ordre pour le fair.

    Il faut fair 2 boucles imbriqué et fair un décallage celleule par cellule.

    A mons avis la meilleur solution serait de changer le composant d'affichage.
    Ou mieux, d'éviter d'afficher 300 000 lignes.
    Avec de telle valeur tous sera long. Y compris le TMemo qui sont les plus simple et sans dout les plus rapides.

  11. #11
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Bonjour,
    Je viens de faire un petit essai rapide avec un composant nommé KSTRINGGRID, hérité de stringgrid, et qui propose une méthode deleterow
    je l'avais téléchargé ici
    http://delphi.developpez.com/freewar...esListesArbres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.FormCreate(Sender: TObject);
    var x,y:integer;
    begin
    for x:=0 to kstringgrid1.Columns.Count-1 do
      for y:=0 to kstringgrid1.RowCount-1 do
        kstringgrid1.cells[x,y]:=inttostr(y);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    kstringgrid1.deleterow(0);
    end;
    J'ai essayé avec 300000 lignes!
    La vitesse de mise à jour de la grille est OK
    Reste à voir si ça fait l'affaire
    Euh, c'est quoi le CPU ?
    Choisir, c'est renoncer...

  12. #12
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Citation Envoyé par OutOfRange
    Euh, c'est quoi le CPU ?
    Je ne peux pas te dire de quoi c'est l'abbréviation, mais c'est le code de ton programme sous sa forme Assembleur. Parfois, il est impossible de déboguer qqch en code Delphi alors que c'est possible en CPU, mais c'est extrèmement rare d'après moi, ça ne m'est jamais arrivé.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  13. #13
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par OutOfRange
    Euh, c'est quoi le CPU ?
    CPU = Central processing Unit, c'est-à-dire tout bonnement le (ou les) processeurs de ta bécane.

    Quand on dit 100 % du CPU, on entend 100 % de la puissance de travail du processeur.
    Roland

  14. #14
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    une petite idée avant de commencé le décalage:
    soit arrete l'affichage de ta stringgrid (j'ai oublie exactement la command) "bien sur la plus bete et de mettre visible a false"
    soit mettre le nbr de rowcount=2 puis a la fin remettre rowcount a sa valeur
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. Recherche tuto pour affichage legende au survol d'une image
    Par FujitSiem dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/11/2007, 20h58
  2. Recherche solution pour affichage Prolog
    Par Kyrel dans le forum Prolog
    Réponses: 2
    Dernier message: 13/12/2006, 19h23
  3. Recherche solution pour micro entreprise
    Par louroulou dans le forum Développement
    Réponses: 2
    Dernier message: 06/07/2006, 17h56
  4. Recherche solution pour fichiers temporaires structurés
    Par RamDevTeam dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/10/2005, 15h25
  5. [VBA] Critère pour affichage d'une msgbox
    Par Virgile59 dans le forum Access
    Réponses: 4
    Dernier message: 10/10/2005, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo