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 :

Affecter la valeur Null à la propriété Checked d'un CheckBox


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué

    Inscrit en
    Août 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 253
    Points : 197
    Points
    197
    Par défaut Affecter la valeur Null à la propriété Checked d'un CheckBox
    Bonjour

    J'aimerai affecter la valeur Null à la propriété Checked d'un checkbox

    exp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if TExoinfo.FieldByName('enf').Value = Null then DBCheckBox1.Checked := False;
    J'y arrive pas.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 469
    Points : 24 905
    Points
    24 905
    Par défaut
    pourquoi modifier la valeur d'un DBCheckBox, autant le lié à la table directement, sinon voir AllowGrayed qui donne l'aspect ni oui, ni non, en Win2K c'est un croix gris foncé, en XP c'est un carré vert, en vista, j'ai pas encore vu ...
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    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 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if TExoinfo.FieldByName('enf').isnull then CheckBox1.Checked := False;
    //ou 
    CheckBox1.Checked:=not TExoinfo.FieldByName('enf').isnull
    nota : tu avais indiqué DBCheckBox1 , celui -ci étant certainement liè a un champ cela ne pourrait pas fonctionner
    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

  4. #4
    Membre habitué

    Inscrit en
    Août 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 253
    Points : 197
    Points
    197
    Par défaut
    EXACT
    J'aimerai avoir un
    Checked ou unChecked

    Pas de Gris

    La valeur "Null" à Uncheked

    J'ai pas trouvé de Solution,sauf initialiser tout les champs avec une valeur après l'événement AfterInsert

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Donc c'est bien un DBCheckBox ou CheckBox à la base ? ... effectivement AllowGrayed ne fonctionne que pour le click utilisateur, mais le premier affichage est foireux, ... c'est con ça

    Donc ça ne fonctionne pas, et effectivement, en fait je me suis fait trompé par les habitudes de ma boite, c'est parce qu'avec MySQL, on déclare nos champs boolean comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char(1) DEFAULT ''
    char(1) DEFAULT 'N'
    TinyInt(1) DEFAULT 0
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DBCheckBox.ValueChecked := 'Y';
    DBCheckBox.ValueUnChecked := ';N';
    le '' ou le 'N' sont false tous les deux ...

    Et donc, les valeurs sont pré-remplis, si tu ne te préoccupe pas du null (là où je travaille on a très peu d'appli ou cela est pré-occupant ou alors la notion échappe à l'utilisateur), tu devrais faire pareil si ton moteur de DB le gère (ou alors un code d'init long et souvent piégeux à maintenir, une petite encapsulation en objet métier ferait merveille) ... en fait, je me rend compte, que j'ai eu assez peu de DBCheckBox dans mes projets dans mes anciennes boites, et en fait, le null avait son importance que ce soit en Cardiologie, en Santé Publique, ... en industrie, je n'avais pas de booléen à afficher, j'avais des vrais lampes sur les machines pour le faire ,

    Comme quoi, revenir à l'essentiel, ça a du bon ... à force de faire toujours la même chose, on oublie, ces petits détails ...


    Donc la Solution a été donné par SergioMaster, il faut prendre un simple TCheckBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBox.Checked := not TExoInfo.FieldByName('enf').IsNull and TExoInfo.FieldByName('enf').AsBoolean
    enf c'est un entier ou une chaine, ou un vrai Booléen ?
    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 habitué

    Inscrit en
    Août 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 253
    Points : 197
    Points
    197
    Par défaut
    Bonjour

    C'est un VarChar, avec un CheckBox je serai obligé de programmer moi même les valeur du champs 'enf' aux saisi, donc ça revient aux même,il vaux mieux initialiser les champs par une valeur dans la Base Firebird.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 469
    Points : 24 905
    Points
    24 905
    Par défaut
    VarChar, effectivement, j'ai le même soucis, des fois c'est '0', 'N', 'F', 'Faux', 'Non' ... tout ça parce qu'il n'y a pas les bases d'un modèle réfléchi dans nos applications, il y a toute une lib qui fait plein de chose qui ne sert à rien, mais n'a pas les fonctions les plus élémentaires, comme un AsBoolean commun à toute les applications ...

    En FireBird, le DEFAULT du SQL, est possible ? si oui, autant en profiter ...
    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 habitué

    Inscrit en
    Août 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 253
    Points : 197
    Points
    197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE EXOIMPOT 
    (
     
      CID VARCHAR(8) DEFAULT 'NON' NOT NULL COLLATE NONE,
     
    );

Discussions similaires

  1. [AC-2003] Affecter une valeur nulle à un entier avant l'exécution de la requête
    Par flet le kid dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2009, 18h17
  2. Affecter une valeur NULL à un paramètre d'un Query ?
    Par Targan dans le forum Débuter
    Réponses: 10
    Dernier message: 18/06/2009, 13h55
  3. Réponses: 3
    Dernier message: 10/06/2009, 22h03
  4. Réponses: 5
    Dernier message: 13/12/2006, 13h34
  5. Affecter la valeur NULL à une cellule d'une table
    Par jacma dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 06/05/2005, 14h43

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