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

 Delphi Discussion :

Mise à jour de StringGrind


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Par défaut Mise à jour de StringGrind
    Bonjour,

    dans mon application, j'ai des checkbox.

    Lorsqu'elles sont cochées (Valeur checked à true sur un événement Click), je renvoie les caption de celles-ci dans une Stringgrid, en les placant dans un ordre précis. Chaque checkbox à sa ligne propre dans la Stinggrid.

    Par appui sur un bouton j'affiche une deuxième StringGrid m'affichant les unes en dessous des autres les Captions des Checkboxes cochées.

    Le problème est que si je décoche une Checkbox, ma StringGrid finale ne se met pas à jour correctement. Je retrouve toujours un item en doublon.

    Si je coche, par exemple 5 Checkbox et que j'appuie sur le bouton, je retrouve bien le résultat escompté.

    Si je décohe une des 5 checkbox et que je clique sur le bouton, ma dernière ligne est en doublon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    procedure TForm1.Button2Click(Sender: TObject);
    var i,c, j,k,l : integer;
    begin
        j := recap.Finish.ColCount;
    for j := 0 to recap.Finish.ColCount - 1 do
    for l := 0 to recap.finish.RowCount -1  do
      begin
      recap.finish.Cells[l,j] := '';
      end;
     
       k := -1;
       for i  := 0 to recap.Fourniture.RowCount -1 do
       begin
         k := k+1;
        if recap.Fourniture.Cells[0,i] = '1' then recap.finish.Cells[0,k] := recap.Fourniture.Cells[1,i]  ;
        if recap.Fourniture.Cells[0,i] = '1' then recap.finish.Cells[1,k] := recap.Fourniture.Cells[2,i]
        else
        k := k-1;
            end;
      recap.Show;
      end;
    Je vous joins 2 copies d'écran pour illustrer le topic.

    Merci
    Images attachées Images attachées   

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Par défaut
    cette copie d'écran est plus lisible.
    Images attachées Images attachées  

  3. #3
    Membre chevronné Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 343
    Par défaut
    Il te faut d'abord effacer ton StringGrid, avant de réafficher la nouvelle liste : si tu remontes d'une ligne la dernière ligne (n à n-1) de ton StringGrid, elle s'affiche bien à la position n-1 mais ne s'est pas effacer visuellement de la ligne n --> d'ou le doublon.

    Question bête mais une TListBox ne serait-elle pas plus simple à gérer dans ton cas ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Par défaut
    Merci pour les réponses. Problème résolu avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for i := 0 to recap.finish.rowcount -1 do
      recap.finish.rows[i].clear;
    A présent, je cherche à écrire ce qui est inscrit dans ma StringGrid dans un classeur excel à une position bien particulière.
    Ma stringGrid à 100 lignes.
    Je vais une boucle lisant les cellules de ma stringgrid avec en condition ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ExcelApp, ExcelWbx, ExcelWbk : variant;
    i,j : integer;
    begin
        ExcelApp := CreateOleObject('Excel.Application');
        ExcelApp.Visible := false;
     
      ExcelWbx := ExcelApp.Workbooks;                 
      ExcelWbk := ExcelWbx.Open('c:\PricerNS\Data\Pricer original.xls');
      ExcelApp.cells[2,2].value := numdevis.caption;
      ExcelApp.cells[2,5].value := datedev.date;
      ExcelApp.cells[4,2].value := commercial.Text;
      ExcelApp.cells[6,2].value := edit1.Text;
      ExcelApp.cells[7,2].value := edit2.text;
      ExcelApp.cells[8,2].value := edit3.Text + ' ' + edit4.Text;
      ExcelApp.cells[8,3].value := edit5.Text + ' ' + edit6.Text;
     
       j :=11; //numéro de ligne de départ dans le fichier excel
       for i := 0 to recap.finish.RowCount -1 do
       begin
       if recap.finish.Cells[0,i] <> ''   then //tant que le texte dans la cellule est différent de ''
      excelApp.cells[j,i].value := recap.finish.Cells[0,i];
      j := j+1;
       end;
       excelApp.workbook.close;
      ExcelApp.quit;
      ExcelApp := unassigned;
      recap.Show;
     
    end;
     
    quand je lance mon programme, il plante et me dit que le projet a déclenché la classe d'exception EOLEException avec le message d'erreur ''OLE 800A03EC''.
     
    Merci de m'aiguiller.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 12h52
  2. [mise à jour]Comment procéder sans tout péter...
    Par FFF dans le forum Installation
    Réponses: 3
    Dernier message: 10/09/2003, 08h11
  3. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45
  4. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

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