GESTION COMPOSANT DBGRID [Résolu]

Signaler
Messages postés
41
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 juin 2007
-
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007
-
Bonjour,
Quelqu'n pourrait-il m'aider a gerer un composant dbgrid pour faire des controle sur les cellule et ne pas pouvoir sortir de la cellule tant que la donnée est erronée.
Exemple j'ai une cellule de type date la personne saisie une date erroné j'ai un super plantage delphi alors que je voudrais trappé le message et ne pas laisser sortir l'utilisateur de la cellule.
2 eme exemple je voudrais toujours à partir d'un DBGRID que l'utilisateur ne puisse faire une selection que dans une liste de valeur prédefinie mais autrement que par la propriété Picklist de la colonne du DBGRID car l'utilisateur a bien une liste de valeur mais il peut saisir autre chose.
Merci pour votre aide.

7 réponses

Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Je connais pas trop les tables, mais apparement tu devrais pouvoir te débrouiller avec les évènements before/after edit/insert , je sais pas trop quand ils se déclenchent par contre mais en cherchant un peu dans les évènments de ta table ou de ton datasource tu devrais trouver je penses.
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Tu peux essayer de controler la valeur saisie lors des évènements OndataUpdate et OnDataChange du datasource associé a ton DBGrid je penses.
Pour ta deuxième question, pourquoi ne pas utiliser un combobox que tu afficherai ou créérai par dessus la cellule lorsque que tu en a besoin ?
Messages postés
41
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 juin 2007

Merci pour cette réponse mais pourrais-tu me donner plus de précision concernant le code à écrire car j'ai fais le test avec :

procedure TFrmPrinc.DtSrcAc_GdtDataChange(Sender: TObject; Field: TField);
begin
 showmessage('different');
 if ((dtmdl.tblac_gdtTRAITE.Value<>'O') and (dtmdl.tblac_gdtTRAITE.Value<>'N')
 and (dtmdl.tblac_gdtTRAITE.Value<>'S')) THEN
  dtmdl.tblac_gdtTRAITE.Value:='N';
end;

et çà plante ...

Cordialement
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Peux-tu donner le message d'erreur, et indiquer à quoi corresponde les objets ;)
Messages postés
41
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 juin 2007

Voici le message que j'ai :
Le projet xxxx a provoque une classe d'exception eDataBaseError avec le message 'tblac_gdt: l'ensembvle de donnee n'est pa en mode edition ou insertion'. Processus stoppé utilise pas a pas ou executer pour continuer.
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

c'est quoi comme composant tblac_gdt ? Sinon, tu peux mettre une condition genre if dataset = dsinsert or dataset = dsedit ...
Messages postés
41
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 juin 2007

C'est un composant table qui pointe sur un fichier dbf