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

Bases de données Delphi Discussion :

DBGrid de delphi


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut DBGrid de delphi
    bonjour,
    l'ai créer une table qui contient un champ boolean initialiser à false
    comment peut on afficher le contenu de ce champ dans un DBGrid de facon des cases à cocher et non pas true et false
    exp:
    si la valeur du champ true alors la case dans DBGrid sera cocher sinon elle n'est pas cocher
    aider mois STP

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut DBGrig
    bonjour,

    merci mais

    ca marche pas

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut BDD
    voila mon code source
    aider moi STP
    Fichiers attachés Fichiers attachés

  5. #5
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Qu'est ce qui ne fonctionne pas : l'affichage ? message d'erreur ?

    La liste d'images est bien "remplie" ?
    Il faut un peu plus d'infos.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour ,
    il n'est a pas un message d'erreur mais il n'affiche pas la case à cocher lors l'exécution
    STP aider moi

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour merci , votre lien ça ma été trés utile mais
    ce qui conserne cette instruction

    if (column est une colonne 'case à cocher') then

    je le met comme ça

    if ( Column.FieldName ='proj_ann') then

    (*tel que 'proj_Ann' un champ boolean*)

    il n'est pas des erreurs de programmation

    mais il n'affiche pas la case à cocher

  8. #8
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Affiche le code de ta procédure (avec les balises CODE) s'il te plait.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    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
    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
    61
    62
    63
    64
    65
    66
    procedure TForm1.dbGrid1DrawColumnCell(
      Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; 
      State: TGridDrawState); 
    begin
     
     
        if ( Column.FieldName ='proj_ann')  then
     // if (column est une colonne 'case à cocher') then
      begin
        { on efface la cellule }
        dbGrid1.Canvas.FillRect(Rect);
        { si coché  }
         if ( Column.FieldName ='proj_ann'  )  then
       // if (column.Field a la valeur coché) then
        begin
     
          //  DmImages.imgCheck.draw(dbGrid1.Canvas,
            imageList1.draw(dbGrid1.Canvas,
            rect.Left + ((rect.Right - rect.Left - imageList1.Width) div 2),
            rect.Top, 
            1);
     
        end
        { sinon, pas coché  }
        else 
        begin
          imageList1.draw(dbGrid1.Canvas,
            rect.Left + ((rect.Right - rect.Left - imageList1.Width) div 2), 
            rect.Top, 
            0);
        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 
        dbGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
      end; 
    end;
     
     
     
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
    with dbGrid1 do
      begin 
        { La grille doit être modifiable... }
        if (not ReadOnly) 
        { ainsi que le dataset }
        and( DataSource1.DataSet.CanModify  )
        { Et la zone sur laquelle on a cliqué doit }
        { être une case à cocher }
        and (SelectedField.FieldName = 'proj_ann' )
         // or (test sur un autre nom de zone)
        //  or ...)
           then
        begin
     
          DataSource1.DataSet.Edit;
          SelectedField.AsBoolean := not SelectedField.AsBoolean;
          DataSource1.DataSet.Post;
     
        end;
      end;
    end;

  10. #10
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Attention ! tu as recopié tel quel le pseudo-code proposé !!

    En fait, tu dois remplacer les instructions écrites en français entre accolades par du code informatique , fais attention aussi aux commentaires // en excès !



    S'il te plait : n'oublie pas de mettre ton code entre les balises #
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    SLT,
    j'ai réussi de faire une case à cocher dans un DBGrid merci à tous ceux qui ont aidé ,
    mon code est la suivante:



    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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
    var
      DrawState: Integer;
      DrawRect: TRect;
    begin
      if (gdFocused in State) then
      begin
        if (Column.Field.FieldName = DBCheckBox1.DataField)  then
        begin
         DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
         DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
         DBCheckBox1.Width := Rect.Right - Rect.Left;
         DBCheckBox1.Height := Rect.Bottom - Rect.Top;
     
         DBCheckBox1.Visible := True;
     
          end;
     
     
      end
      else {in this else area draw any "stay behind" bitmaps}
      begin
        if (Column.Field.FieldName = DBCheckBox1.DataField)  then
        begin
          DrawRect:=Rect;
          InflateRect(DrawRect,-1,-1);
     
          DrawState := ISChecked[Column.Field.AsBoolean];
     
          DBGrid1.Canvas.FillRect(Rect);
          DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect, DFC_BUTTON, DrawState);
        end;
      end; //if focused
     
     
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i, j: Integer;
    begin
     Table1.Active := True;
     
      with DBGrid1.DataSource.DataSet do
        for i := 0 to DBGrid1.FieldCount - 1 do
          for j := 0 to FieldCount - 1 do
            if Fields[j].FieldName = DBGrid1.Fields[i].FieldName then
              DBGrid1.Columns[i].Title.Alignment := Fields[j].Alignment;
     
      //  DBGrid1.Align:=alClient;
     
      //setup check box
      DBCheckBox1.DataSource  := DataSource1;
      DBCheckBox1.DataField   := 'Proj_Ann';
      DBCheckBox1.Visible     := False;
      DBCheckBox1.Color       := DBGrid1.Color;
      DBCheckBox1.Caption     := '';
      DBCheckBox1.ValueChecked := '';
      DBCheckBox1.ValueUnchecked:='';
     
     
    end;
     
     
    procedure TForm1.DBCheckBox1Click(Sender: TObject);
    begin
      if DBCheckBox1.Checked then
         DBCheckBox1.Caption := DBCheckBox1.ValueChecked
      else
         DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
    end;

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    cela veut-il bien dire "résolu" ? si c'est le cas alors le tag "résolu" stp.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

Discussions similaires

  1. DBgrid de delphi 5
    Par nassimanocus dans le forum Débuter
    Réponses: 5
    Dernier message: 29/01/2013, 12h55
  2. comment effectuer un clic dans un DBGrid avec Delphi?
    Par nesinfo dans le forum Débuter
    Réponses: 5
    Dernier message: 20/05/2009, 21h45
  3. Réponses: 1
    Dernier message: 19/11/2008, 18h51
  4. Améliorer la DBGrid pour Delphi
    Par zaping83 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/01/2008, 08h51
  5. Suppression d'une colonne d'un DBGrid avec delphi
    Par islame dans le forum Bases de données
    Réponses: 6
    Dernier message: 30/04/2007, 01h24

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