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 :

Gestion CheckBox TCRDBGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut Gestion CheckBox TCRDBGrid
    Bonjour,

    Je cherche à ajouter une checkbox dans un Grid, j'ai utilisé la méthode proposée dans la FAQ à l'aide de deux images (une case cochée puis décochée).
    Pour sélectionner une ligne, l'utilisateur doit effectué un double clic.
    Cette méthode marche nickel sauf que dans ma base j'utilise un number (0 image décochée puis 1 image cochée) et il arrive que lorsque j'effectue un simple clic l'image disparaît pour laisser place au chiffre sélectionné.
    Y a t'il un moyen d’empêcher ça ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Si c'est un TCRDBGrid de CoreLab\Devart, il me semblait que c'est une fonctionnalité déjà intégrée, je dois confondre avec le composant de mon ancien employeur qui héritait de la TCRDBGrid car la CheckBox c'était intégré pour les colonnes ftBoolean de MyDAC lié à un TINYINT de MySQL

    Comme toi, j'ai utilisé la FAQ Comment mettre une case à cocher dans une DBGrid ? pense qu'au lieu d'une Image, tu peux aussi utiliser la fonction DrawFrameControl qui fournira l'aspect du thème en cours

    Je suppose que le dessin disparait lors du passage en mode saisie, mets la TColumn contenant la CheckBox à ReadOnly, tu ne pourras plus changer la valeur et cela ne passera pas en édition

    Pour gérer le cochage\décochage, utilise OnCellClick, la propriété Column te permettra de savoir si l'on clique sur la colonne avec CheckBox

    Si tu n'as qu'une seule colonne en CheckBox, tu peux aussi passer l'ensemble du DBGrid en ReadOnly et en Options + dgRowSelect puis avec l'évènement OnKeyDown en testant VK_SPACE ou même un simple OnDblClick, tu coches et décoches !
    Pour les modifications, tu fais un formulaire, c'est plus pratique en général !

    Sinon, il y a aussi la TDBCtrlGrid, qui permet d'utiliser des TDBCheckBox, TDBEdit ... c'est très puissants aussi !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Merci pour ta proposition mais je passe pas par TColumn. Après si tu connais un composant gérant directement la checkbox je suis preneur.
    Je charge mon Grid comme ça :

    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
    // chargement du CRDBGrid
        DM_Facturation.Q_ListeDevisTemp.Close;
        DM_Facturation.Q_ListeDevisTemp.Active := False;
        CRDBG_Devis.Refresh;
     
        DM_Facturation.Q_ListeDevisTempZSF_DEVSEL.DisplayLabel        := ' ';
        DM_Facturation.Q_ListeDevisTempZSF_DEVSEL.DisplayWidth        := 3;
        DM_Facturation.Q_ListeDevisTempZSF_CLI_NUM.DisplayLabel       := 'Id Client';
        DM_Facturation.Q_ListeDevisTempZSF_CLI_NUM.DisplayWidth       := 7;
        DM_Facturation.Q_ListeDevisTempZSF_CLI_CIP.DisplayLabel       := 'Code Cip';
        DM_Facturation.Q_ListeDevisTempZSF_CLI_CIP.DisplayWidth       := 7;
        DM_Facturation.Q_ListeDevisTempZSF_DEVDATE.DisplayLabel       := 'Date';
        DM_Facturation.Q_ListeDevisTempZSF_DEVDATE.DisplayWidth       := 10;
        DM_Facturation.Q_ListeDevisTempZSF_CLI_RAISON.DisplayLabel    := 'Client';
        DM_Facturation.Q_ListeDevisTempZSF_CLI_RAISON.DisplayWidth    := 28;
        DM_Facturation.Q_ListeDevisTempZSF_MATERIEL.DisplayLabel      := 'Matériel en réparation';
        DM_Facturation.Q_ListeDevisTempZSF_MATERIEL.DisplayWidth      := 70;
        DM_Facturation.Q_ListeDevisTempZSF_OPE.DisplayLabel           := 'Opération';
        DM_Facturation.Q_ListeDevisTempZSF_OPE.DisplayWidth           := 9;
        DM_Facturation.Q_ListeDevisTempZSF_TASK.DisplayLabel          := 'Tâche';
        DM_Facturation.Q_ListeDevisTempZSF_TASK.DisplayWidth          := 5;
        DM_Facturation.Q_ListeDevisTempZSF_DEVID.DisplayLabel         := 'Devis';
        DM_Facturation.Q_ListeDevisTempZSF_DEVID.DisplayWidth         := 5;
     
        DM_Facturation.Q_ListeDevisTempZSF_NOSERIEMAT.Visible         := False;
        DM_Facturation.Q_ListeDevisTempZSF_FACHOT.Visible             := False;
        DM_Facturation.Q_ListeDevisTempZSF_DEVIS.Visible              := False;
     
        DM_Facturation.Q_ListeDevisTemp.Active := True;
    Au début, j'avais testé avec onCellClick mais ça se passait pas exactement comme je voulais, je vais retester. Si je laisse onDblClick, forcément le chiffre gérant l'image finira par apparaître ? Je ne pense pas que DrawFrameControl changera ça ? A voir également

    Edit : Je viens de voir ce que tu as rajouté, je regarde tout ça de plus près merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Voilà comment je gère le cochage/décochage pour l'instant (j'ai ajouté le DrawFrameControl, je trouve ça mieux merci) :

    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
    34
        if CRDBG_Devis.SelectedField.FieldName = 'ZSF_DEVSEL' then
        begin
          { La grille doit être modifiable... }
          CRDBG_Devis.ReadOnly := False;
          if CRDBG_Devis.DataSource.DataSet.CanModify then
          begin
            CRDBG_Devis.DataSource.DataSet.Edit;
            if CRDBG_Devis.SelectedField.Value = 1 then
            begin
              Sql := 'UPDATE tz_sav_facdev set zsf_devsel = 0 ';
              Sql := Sql + 'WHERE zsf_devid = ' + FloatToStr(CRDBG_Devis.DataSource.DataSet.FieldByName('zsf_devid').Value);
     
              DM_Facturation.Q_Update.Close;
              DM_Facturation.Q_Update.SQL.Clear;
              DM_Facturation.Q_Update.SQL.Add(Sql);
              DM_Facturation.Q_Update.ExecSQL;
            end
            else
            begin
              Sql := 'UPDATE tz_sav_facdev set zsf_devsel = 1 ';
              Sql := Sql + 'WHERE zsf_devid = ' + FloatToStr(CRDBG_Devis.DataSource.DataSet.FieldByName('zsf_devid').Value);
     
              DM_Facturation.Q_Update.Close;
              DM_Facturation.Q_Update.SQL.Clear;
              DM_Facturation.Q_Update.SQL.Add(Sql);
              DM_Facturation.Q_Update.ExecSQL;
            end;
            CRDBG_Devis.DataSource.DataSet.Post;
          end;
          CRDBG_Devis.ReadOnly := True;
          CRDBG_Devis.Refresh;
          DM_Facturation.Q_ListeDevisTemp.Close;
          DM_Facturation.Q_ListeDevisTemp.Open;
        end;
    Est-ce qu'à ton avis dans ce code, le passage en mode édition pourrait être éviter (image remplacé par le chiffre sélectionné qui la gère dans la base) ?

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    EDIT : la TSMDBGrid possède l'option eoCheckBoxSelect, tu peux l'utiliser à la place de la TCRDBGrid, voir ce sujet tester la case a cocher dans SMDBGrid



    Même si tu ne défini pas de TColumn explicitement, ils existent

    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
    procedure TForm1.DBGrid1OnCellClick(Column: TColumn);
    var
      KeepState: TDataSetState;
    begin
    //  if Column.FieldName = DM_Facturation.Q_ListeDevisTempZSF_DEVSEL.FieldName then
      if Column.Field = DM_Facturation.Q_ListeDevisTempZSF_DEVSEL then
      begin
        KeepState := Column.Field.DataSet.State;
        if not KeepState in [dsEdit, dsInsert] then
          Column.Field.DataSet.Edit;
        Column.Field.AsBoolean := not Column.Field.AsBoolean;
        if not KeepState in [dsEdit, dsInsert] then
          Column.Field.DataSet.Post; 
      end;
    end;

    EDIT : Tu peux simplifier tout ça !

    ReadOnly n'a pas besoin d'être changé, tu peux avoir une grille en lecture seule pour l'utilisateur mais pas pour le code !

    Edit\Post je ne les comprends pas bien dans code, je ne vois pas d'affectation, tu fais un SQL mais cela n'impacte pas le contenu du DataSet

    Tu fais un Refresh du DBGrid, je ne crois pas que cela fasse grand chose

    CRDBG_Devis est lié à Q_ListeDevisTemp, c'est le Close\Open qui font le boulot, tu dois perdre la ligne courante non ?

    FloatToStr ? un simple IntToStr n'est-il pas suffisant ou même AsString !

    Ton code se résume a 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
        if CRDBG_Devis.SelectedField.FieldName = 'ZSF_DEVSEL' then
        begin
          NouvelleValeur := StrUtils.IfThen(CRDBG_Devis.SelectedField.Value = 1, '0', '1'); 
     
              Sql := 'UPDATE tz_sav_facdev set zsf_devsel = ' + NouvelleValeur
                + 'WHERE zsf_devid = ' + CRDBG_Devis.DataSource.DataSet.FieldByName('zsf_devid').AsString;
     
              DM_Facturation.Q_Update.Close;
              DM_Facturation.Q_Update.SQL.Text := SQL;
              DM_Facturation.Q_Update.ExecSQL;
     
          end;
     
          DM_Facturation.Q_ListeDevisTemp.Close;
          DM_Facturation.Q_ListeDevisTemp.Open;
        end;
    A Mon avis, tu devrais utiliser un TClientDataSet ou un cache locale quelconque pour gérer la case à cocher, puis un bouton valider va lancer les SQL dans une seule et unique transaction !

    Déjà avoir une colonne de sélection dans une table c'est très étrange, c'est sélection est permanente et commune à tous les utilisateurs ? tu es peut-être dans une application strictement monoposte ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Bonjour,

    Merci pour le code simplifié que tu m'as fourni, ça fonctionne nickel !
    Cependant, j'ai toujours le même problème, mon image continue à disparaître.
    Je vais essayé de travaillé avec le onCellClick pour voir si c'est mieux !
    La colonne de sélection est uniquement utilisée dans une table temporaire !
    Concernant le SMDBGrid j'avais lu quelque chose à ce sujet et c'est un composant qui semblait convenir, j'ai réussi à l'installer mais ça ne compile pas, problème de dcu

    Edit : Le CellClick ne convient pas puisque il est impossible de toucher à la ligne en cours et le chiffre apparaît également
    Edit2 : En fait le chiffre apparaît uniquement à la place de l'image dans le cas où c'est la ligne sélectionnée

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Fait attention au TGridDrawState, il t'indique l'état de la zone à dessiner dont l'état de sélection
    Depuis XE2, la gestion de thème a modifié le comportement de la TDBGrid en particulier le dessin avec transparence de la sélection.

    Pour avoir dessiner des CheckBox, je sais que cela fonctionne sans ce problème de valeur brute qui ré-apparait, normalement, c'est plus à l'édition qu'à la selection que cela posait problème d'où le passage forcé en dgRowSelect

    Je viens de le tenter en C++Builder2007, un TDBGrid en Options par défaut

    Une CheckBoxDrawCheckBox indique si le dessin doit être fait
    Je peux sélectionner et conserver le dessin

    Code c++ : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    //---------------------------------------------------------------------------
    void __fastcall TDBManipForm::BtnCDSBasicsCreateDataSetClick(TObject *Sender)
    {
      ClientDataSetBasics->Close();
      ClientDataSetBasics->FieldDefs->Clear();
      ClientDataSetBasics->FieldDefs->Add("Champ1", ftInteger);
      ClientDataSetBasics->FieldDefs->Add("Champ2", ftString, 10);
      ClientDataSetBasics->FieldDefs->Add("Champ3", ftBoolean);
      ClientDataSetBasics->FieldDefs->Add("Champ4", ftDateTime);
      ClientDataSetBasics->FieldDefs->Add("Champ5", ftWideString, 10);
      ClientDataSetBasics->CreateDataSet();
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TDBManipForm::CheckBoxDrawCheckBoxClick(TObject *Sender)
    {
      if (CheckBoxDrawCheckBox->Checked)
        DBGridCDSBasics->Options = TDBGridOptions(DBGridCDSBasics->Options) << dgRowSelect;
      else
        DBGridCDSBasics->Options = TDBGridOptions(DBGridCDSBasics->Options) >> dgRowSelect;
     
      DBGridCDSBasics->Invalidate();
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TDBManipForm::DBGridCDSBasicsDrawDataCell(TObject *Sender,
          const TRect &Rect, TField *Field, TGridDrawState State)
    {
      if (CheckBoxDrawCheckBox->Checked)
        if (Field->DataType == ftBoolean)
          if (Sender->InheritsFrom(__classid(TDBGrid)))
          {
            ((TDBGrid*)Sender)->Canvas->FillRect(Rect);
            DrawFrameControl(((TDBGrid*)Sender)->Canvas->Handle, (RECT*)&Rect, DFC_BUTTON, DFCS_BUTTONCHECK | (Field->AsBoolean ? DFCS_CHECKED : 0));
          }
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TDBManipForm::DBGridCDSBasicsDblClick(TObject *Sender)
    {
      if (Sender->InheritsFrom(__classid(TDBGrid)))
      {
        TPoint CursorPos = Mouse->CursorPos;
        TDBGrid* Grid = ((TDBGrid*)Sender);
        CursorPos = Grid->ScreenToClient(CursorPos);
        TGridCoord Coord = Grid->MouseCoord(CursorPos.x, CursorPos.y);
        TField *Field = Grid->Columns->Items[Coord.X - (Grid->Options.Contains(dgIndicator) ? 1 : 0)]->Field;
     
        if (Field->DataType == ftBoolean)
        {
          TDataSetState KeepState = Field->DataSet->State;
          if ((KeepState != dsEdit) && (KeepState != dsInsert))
            Field->DataSet->Edit();
          Field->AsBoolean = ! Field->AsBoolean;
          if ((KeepState != dsEdit) && (KeepState != dsInsert))
            Field->DataSet->Post();
        }
      }
    }
    Images attachées Images attachées  
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Merci pour ta nouvelle réponse mais tu m'as perdu en route là !
    Voilà la fonction gérant l'affichage des cases, tu vas peut être y voir quelque chose qui ne te semble pas bon :

    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
    34
    procedure TF_FactDevis.CRDBG_DevisDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if DM_Facturation.Q_ListeDevisTemp.Eof = false then
      begin
        CRDBG_Devis.OnDblClick := CRDBG_DevisDblClick;
        if Column.FieldName = 'ZSF_DEVSEL' then
        begin
          { on efface la cellule }
          CRDBG_Devis.Canvas.FillRect(Rect);
          { si coché  }
          if DM_Facturation.Q_ListeDevisTempZSF_DEVSEL.Value = 1 then
          begin
            DrawFrameControl(CRDBG_Devis.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED);
          end
          { sinon, pas coché  }
          else
          begin
            DrawFrameControl(CRDBG_Devis.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK)
          end
        end
        { si column ne correspond pas à une case à cocher, }
        { on ne s'occupe pas du dessin de la cellule, on }
        { transmet donc à DefaultDrawColumnCell }
        else
        begin
          CRDBG_Devis.DefaultDrawColumnCell(rect,datacol,column,state);
        end;
      end
      else
      begin
        CRDBG_Devis.OnDblClick := nil;
      end;
    end;

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if DM_Facturation.Q_ListeDevisTemp.Eof = false then
    je ne vois pas trop l'intéret, il le gère tout seul

    J'utilise OnDrawDataCell et non OnDrawColumnCell !
    Je n'ai pas fait d'appel à DefaultDrawColumnCell, j'ai laissé DefaultDrawing à true.

    Tout ce joue sur "Options + dgRowSelect", sinon cela peut entrer en mode Edition et donc là, cela ne doit pas dessiner et utiliser le InplaceEditor intégré
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Par défaut
    Merci pour le rappel du dgRowSelect, j'étais passé à côté, je l'avais laissé à False, c'était juste ça le soucis en fait, maintenant c'est parfait !
    Encore merci pour le temps que tu m'as accordé et bonne fin de journée

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

Discussions similaires

  1. gestion des checkbox , debutant
    Par Mobistar dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 14/04/2008, 14h54
  2. Création et gestion de checkbox en dynamique
    Par davinout dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 15/01/2007, 15h47
  3. la gestion de checkbox
    Par way66 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2006, 13h06
  4. Gestion des checkbox en API32 ?
    Par pj69100 dans le forum MFC
    Réponses: 2
    Dernier message: 01/05/2006, 11h12

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