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

Lazarus Pascal Discussion :

Problème avec un TDrawGrid en mode Edition


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Problème avec un TDrawGrid en mode Edition
    Bonjour à toutes et à tous,

    Je sèche lamentablement depuis une journée sur un problème de modification en cours de frappe.

    Mon problème : Dans une cellule d'un TDrawGrid que j'ai mis en mode "édition", je voudrais pouvoir modifier au cours de la frappe le contenu de cette cellule. Par exemple, je dois y entrer une valeur numérique et je souhaiterais que lorsque je frappe sur un caractère alpha, celui n'apparaisse pas dans la cellule et ne soit pas pris en compte.

    Je n'y arrive pas, j'ai bien essayé diféentes chose avec les propriétés, les options, les évènement OnKeyPress, OnGetEditText, ... rien n'y fait.

    Peut-être n'est-ce pas possible ?

    Si cela l'est, avez-vous une piste, un exemple à me donner ?

    Merci de votre aide.

    Pierre

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    A ta place, lors du clic sur la cellule, je placerai un TEdit de la même taille que la cellule, et tu gères tout ce que tu veux avec les évenements du TEdit. Tu peux peut être mettre un TSpinEdit si ca correspond a tes besoins ...

    Bonne chance

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Alors ça, c'est pas c.. . S'il n'y a pas de solution plus directe avec le TDrawGrid, je vais essayer cela.

    Merci beaucoup.

    Pierre

  4. #4
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je n'y arrive pas, j'ai bien essayé diféentes chose avec les propriétés, les options, les évènement OnKeyPress, OnGetEditText, ... rien n'y fait.
    Bonjour

    Euh, je n'ai peut-être pas bien compris le but, mais si c'est de filtrer la frappe de certains caractères, pourquoi ne pas utiliser l'événement KeyPress de TDrawGrid ?

    Par exemple pour filtrer les touches numériques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.DrawGrid1KeyPress(Sender: TObject; var Key: char);
    begin
      case Key of
        #0..#31, '0'..'9':
      else
        key:=#0;
      end;
    end;

  5. #5
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Merci DOLPat® pour cette solution.

    Je l'avais ébauchée, mais j'avais buté sur le problème du séparateur décimal qui doit :

    - se trouver au moins en deuxième position,
    - n'apparaître qu'une fois.

    Je n'avais pas réussi à gérer cela car avec OnKeyPressed, on ne connaît pas la position du curseur lorsqu'on le déplace.

    Je vais reconsidérer la question.

    Cordialement.

    Pierre

  6. #6
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je n'avais pas réussi à gérer cela car avec OnKeyPressed, on ne connaît pas la position du curseur lorsqu'on le déplace.
    Une demi-solution est d'interdire l'utilisation des touches VK_Left et VK_Right et de n'autoriser que VK_Back pour les corrections. Il est alors facile de gérer le séparateur décimal.

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    une autre idée est de gérer le OnChange(Text) de la cellule (s'il existe) ou le KeyPress en testant si la modification conserve la compatibilité avec le format souhaité (sinon, il suffit de l'annuler).

    en utilisant S=Format(S, 'ton masque') ou regexp ou routine ou conversion
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    une autre idée est de gérer le OnChange(Text) de la cellule (s'il existe) ou le KeyPress en testant si la modification conserve la compatibilité avec le format souhaité (sinon, il suffit de l'annuler). ...
    OnChange n'existe pas. Le KeyPress tout seul n'est pas gérable. Par contre, il me semble qu'en combinant les données de OnKeyPress et OnSetEditText je devrait y arriver ... Je cherche.

    Cordialement.

    Pierre

Discussions similaires

  1. problème avec le passage en mode .EXE
    Par za3im_ensa dans le forum LabVIEW
    Réponses: 2
    Dernier message: 21/07/2011, 16h56
  2. Réponses: 0
    Dernier message: 20/12/2010, 15h54
  3. Problème avec Full-Screen Exclusive mode API
    Par SheikYerbouti dans le forum Composants
    Réponses: 2
    Dernier message: 08/02/2010, 06h49
  4. Problème avec l'Interface Graphique (mode Design)
    Par helico2 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 20/05/2008, 21h10
  5. Réponses: 2
    Dernier message: 27/02/2007, 09h51

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