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 :

Dessiner case à cocher dans DBGrid


Sujet :

Delphi

  1. #41
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    La première méthode (soustraction) ne fonctionne pas. Et la deuxième du coup si on clique ça coche et si on reclique ça décoche ?
    Windows XP
    Delphi 7

    WinDev Mobile 17

  2. #42
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    ouais c'est l'idée. Il s'agit d'une bascule, cela simule le fonctionnement d'une case à cocher.

    La soustraction, ca fonctionne à condition de s'assurer que la valeur initiale est 0 ou 1. L'idée est d'employer une suite définie par récurrence, X(n+1) = 1 -X(n), le premier terme X(0) conditionne les autres.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #43
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par juju1988 Voir le message
    Et la deuxième du coup si on clique ça coche et si on reclique ça décoche ?
    C'est effectivement l'idée !
    Si tu n'aime pas le changement de la coche au Click,
    j'ai fourni une variante C++ Delphisé que je te laisse corriger pour gérer le changement de la coche sur le Double Click,
    c'est un peu plus retord car il faut manuellement calculé la colonne

    Citation Envoyé par e-ric Voir le message
    Pourquoi passer par une fonction sur un calcul aussi élémentaire ?
    Encore si l'on avait l'opérateur de sélection du langage C, je comprendrais.
    élémentaire pour toi mais pas pour juju !

    Perso, comme je code en C++, j'écrirais naturellement
    Column->Field->AsInteger = ! Column->Field->AsInteger;
    car ! c'est toujours le not logique contrairement à Delphi ou cela change logique\bit-à-bit, en C++, le bit-à-bit c'est ~

    à la limite peut-être
    Column->Field->AsInteger = Column->Field->AsInteger ? 0 : 1;

    Mais je me débrouille pour que la colonne fantome soit un BIT ou TinyInt(1) respectivement avec le provider DBExpress pour Sybase ou MyDAC pour MySQL sont malin pour transformer le BIT ou TinyInt(1) en TBooleanField permettant d'écrire directement
    Column->Field->AsBoolean = ! Column->Field->AsBoolean;
    Et là pas d'amguïté !

    Enfin en Delphi, j'écrirais ceci avec AsInteger
    Column.Field.AsInteger := Integer(not LongBool(Column.Field.AsInteger));
    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

  4. #44
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Perso, comme je code en C++, j'écrirais naturellement
    Column->Field->AsInteger = ! Column->Field->AsInteger;
    car ! c'est toujours le not logique contrairement à Delphi ou cela change logique\bit-à-bit, en C++, le bit-à-bit c'est ~
    C/C++ font la confusion entre booléen et entier, point de vue de pascalien.
    Enfin en Delphi, j'écrirais ceci avec AsInteger
    Column.Field.AsInteger := Integer(not LongBool(Column.Field.AsInteger));
    ça donne une expression trop compliqué par rapport à l'objectif.

    à la limite peut-être
    Column->Field->AsInteger = Column->Field->AsInteger ? 0 : 1;
    L'opérateur de sélection dont je parlais, inexistant en Delphi et c'est dommage car il rendrait parfois service.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #45
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par e-ric Voir le message
    ça donne une expression trop compliqué par rapport à l'objectif.
    C'est bien vrai ! un double cast, ce n'est pas très lisible !
    si l'on est pas habitué le 1 - x ne l'est pas plus d'où l'ajout de commentaire pour indiquer que c'est juste une permutation true\false

    raison de plus que le champ DB soit fortement type BOOL pour que le provider fournisseur un TBooleanField !


    Citation Envoyé par e-ric Voir le message
    L'opérateur de sélection dont je parlais, inexistant en Delphi et c'est dommage car il rendrait parfois service.
    En XE3, IfThen est marqué inline même si la documentation ne le précise pas !
    Du coup, cela se rapproche du ?, cela économise le CALL ...
    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. #46
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    C'est bien vrai ! un double cast, ce n'est pas très lisible !
    si l'on est pas habitué le 1 - x ne l'est pas plus d'où l'ajout de commentaire pour indiquer que c'est juste une permutation true\false

    raison de plus que le champ DB soit fortement type BOOL pour que le provider fournisseur un TBooleanField !



    En XE3, IfThen est marqué inline même si la documentation ne le précise pas !
    Du coup, cela se rapproche du ?, cela économise le CALL ...
    Ouais, mais les arguments de l'inline sont évalués comment ? comme pour une fonction.

    Pour le 1-x,j'ai déjà vu des expressions plus compliqué, pour quelqu'un qui a fait un peu de maths dans sa jeunesse, c'est pas insurmontable.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #47
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Citation:
    Envoyé par juju1988 Voir le message
    Et la deuxième du coup si on clique ça coche et si on reclique ça décoche ?
    C'est effectivement l'idée !
    Si tu n'aime pas le changement de la coche au Click,
    j'ai fourni une variante C++ Delphisé que je te laisse corriger pour gérer le changement de la coche sur le Double Click,
    c'est un peu plus retord car il faut manuellement calculé la colonne
    Non non c'est parfait comme principe

    J'ai utilisé ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Enfin en Delphi, j'écrirais ceci avec AsInteger
    Column.Field.AsInteger := Integer(not LongBool(Column.Field.AsInteger));
    Mais pas de changement non plus...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  8. #48
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Retire le DrawCell !
    Regarde si cela passe de 0 à 1 et l'inverse !
    Si cela change 0\1 c'est un bug du Draw
    Si cela ne change pas ... euh, décidément tu n'as pas de bol !

    Est-ce que q_select est modifiable ?
    le résultat d'un SQL est parfois en lecture seule et refuse le Edit !

    Est-ce que DBGrid1CellClick est bien lié à DBGrid1 OnCellClick ?

    Attention au Edit\Post, en général, je ne les force pas,
    je conserve l'état en cours via Column.DataSet.State;
    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

  9. #49
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TFS42.DBGrid_selectDblClick(Sender: TObject; Column : TColumn);
    begin
    (*  if Dbgrid_select.Fields[2].AsInteger = 0 then
        showmessage('toto');   *)
    if Column.FieldName='REGROUPER' then
      begin
        Column.Field.DataSet.Edit;
        Column.Field.AsInteger := Integer(not LongBool(Column.Field.AsInteger));
        Column.Field.DataSet.Post;
      end;
    end;
    DrawCell retiré et ça ne change pas je vais m'arracher les cheveux... sinon tant pis je ne dessine pas de case à cocher mais je fais un X dans la cellule à chaque clic...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  10. #50
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    cela ne change pas ... euh, décidément tu n'as pas de bol !

    Est-ce que q_select est modifiable ?
    le résultat d'un SQL est parfois en lecture seule et refuse le Edit !

    Est-ce que DBGrid1CellClick est bien lié à DBGrid1 OnCellClick ?
    ou
    DBGrid_selectDblClick lié à DBGrid_selec.OnCellClick ?

    Attention au nommage !
    DBGrid_selectDblClick c'est plutôt OnDblClick
    DBGrid_selectCellClick c'est plutôt OnCellClick
    Tu vas t'y perdre !

    Il n'y a pas de Sender pour OnCellClick !
    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

  11. #51
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    je viens de penser à un truc, l'ensemble de données est un TQuery ?
    Par défaut, les TQuery ne sont pas modifiables, auquel il faut mettre en place la plomberie pour rendre les mises à jour possibles.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  12. #52
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Ne t'inquiète pas, je l'ai évoqué dès ma 1ere réponse :
    Au besoin le TClientDataSet fournira ce cache si tu Query n'en fourni pas !
    Mais vu les prototype de gestionnaire fourni, à mon avis, c'est qu'il ne sont pas lié à leur event
    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

  13. #53
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    cela ne change pas ... euh, décidément tu n'as pas de bol !

    Est-ce que q_select est modifiable ?
    le résultat d'un SQL est parfois en lecture seule et refuse le Edit !

    Est-ce que DBGrid1CellClick est bien lié à DBGrid1 OnCellClick ?
    ou
    DBGrid_selectDblClick lié à DBGrid_selec.OnCellClick ?

    Attention au nommage !
    DBGrid_selectDblClick c'est plutôt OnDblClick
    DBGrid_selectCellClick c'est plutôt OnCellClick
    Tu vas t'y perdre !

    Il n'y a pas de Sender pour OnCellClick !

    Voici mes deux procédures sur le dbgrid_select....


    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
    //
    // Procédure permettant de dessiner case à cocher dans les colonnes d'un DBGrid
    //
    procedure TFS42.DBGrid_SelectDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with Sender as TDBGrid do
      begin
        // On ne prend en compte que la colonne REGROUPER
        if sameText(Column.FieldName, 'REGROUPER') then
        begin
          { On efface la cellule }
          Canvas.FillRect(Rect);
          { Cochée ou Pas ?}
     
          dmImages.imgCheck.Draw(DBGrid_select.Canvas,
              Rect.Left + ((Rect.Right - Rect.Left - dmImages.imgCheck.Width) div 2),
              Rect.Top,
              Column.Field.AsInteger // 0 = non coché, 1 coché
     
            );
        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
          DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
      end;
    end;
     
     
    // Gestion de la case à cocher : Au double clic on coche ou on décoche la case
    //
    procedure TFS42.DBGrid_selectDblClick(Sender: TObject; Column : TColumn);
    begin
    (*  if Dbgrid_select.Fields[2].AsInteger = 0 then
        showmessage('toto');   *)
    if Column.FieldName='REGROUPER' then
      begin
        Column.Field.DataSet.Edit;
        Column.Field.AsInteger := Integer(not LongBool(Column.Field.AsInteger));
        Column.Field.DataSet.Post;
      end;
    end;

    Correct ou non ?
    Windows XP
    Delphi 7

    WinDev Mobile 17

  14. #54
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par e-ric Voir le message
    Par défaut, les TQuery ne sont pas modifiables...
    Par défaut l'ensemble de résultats d'un TQuery est modifiable sous la condition que les données ne proviennent que d'une seule et unique table.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  15. #55
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Aïe là ça provient de deux tables donc c'est foutu...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  16. #56
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par e-ric Voir le message
    je viens de penser à un truc, l'ensemble de données est un TQuery ?
    Par défaut, les TQuery ne sont pas modifiables, auquel il faut mettre en place la plomberie pour rendre les mises à jour possibles.
    Il suffit juste de mettre en CacheUpdates (enfin dans mon cas en utilisant les ZEOSDBO , j'ai rajouté un UpdateSQL) pas de quoi fouetter un chat
    si les champs ont été définis dans le datasource , bien vérifier que le champ ne soit pas en Readonly (par défaut c'est le cas).

    j'avais également ôter , les options dgEditing de la dbgrid

    as-tu la possibilité d'utiliser des composants tiers ? la smdbgrid (gratuite) te permettrait de faire cela en très peu de temps
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  17. #57
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Non je n'ai rien d'autre. Et je suis prise par le temps il faut que je résolve le problème aujourd'hui ça fait déjà une journée que je suis dessus je vais me faire taper sur les doigts pour les délais

    Je vais écrire un X dans ma colonne tant pis ça ira plus vite. Merci à tous pour votre aide
    Windows XP
    Delphi 7

    WinDev Mobile 17

  18. #58
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    par TQuery , on entends bien la même chose , a savoir le TQuery du BDE ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #59
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Oui c'est ça
    Windows XP
    Delphi 7

    WinDev Mobile 17

  20. #60
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    bon , alors j'ai fait un test avec le BDE et donc TQuery en rajoutant un TUpdateSQL cela fonctionne nickel pour la même demo que ce que j'ai illustré .

    je ne reviens pas sur le fait que BDE est Obsolète

    je vais faire un essai avec 2 tables liées après ce post (le temps que je trouve dans ma BDD quelque chose qui correspondrait)

    [edit]
    fait , ma query comprend 2 tables liées et pourtant ça fonctionne
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. case à cocher dans dbGrid pour sélection de ligne ?
    Par TheYoMan dans le forum Débuter
    Réponses: 2
    Dernier message: 24/07/2009, 09h59
  2. case à cocher dans une DBGrid
    Par beambeam dans le forum C++Builder
    Réponses: 9
    Dernier message: 17/05/2009, 13h28
  3. Réponses: 24
    Dernier message: 24/11/2005, 10h28
  4. [excel vba]case à cocher dans excel pour plusieurs lignes
    Par fcoisb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2005, 11h23
  5. Case à cocher dans une requête
    Par kloss dans le forum Access
    Réponses: 6
    Dernier message: 14/10/2004, 11h44

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