Bonjour
J'aimerai affecter la valeur Null à la propriété Checked d'un checkbox
exp:
J'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if TExoinfo.FieldByName('enf').Value = Null then DBCheckBox1.Checked := False;
Bonjour
J'aimerai affecter la valeur Null à la propriété Checked d'un checkbox
exp:
J'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if TExoinfo.FieldByName('enf').Value = Null then DBCheckBox1.Checked := False;
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
nota : tu avais indiqué DBCheckBox1 , celui -ci étant certainement liè a un champ cela ne pourrait pas fonctionner
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
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
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
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
puis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char(1) DEFAULT '' char(1) DEFAULT 'N' TinyInt(1) DEFAULT 0
le '' ou le 'N' sont false tous les deux ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DBCheckBox.ValueChecked := 'Y'; DBCheckBox.ValueUnChecked := ';N';
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
enf c'est un entier ou une chaine, ou un vrai Booléen ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part CheckBox.Checked := not TExoInfo.FieldByName('enf').IsNull and TExoInfo.FieldByName('enf').AsBoolean
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
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.
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
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, );
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager