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 :

Agir par des frappes clavier sur un TPaintBox


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut Agir par des frappes clavier sur un TPaintBox
    Agir par des frappes clavier sur un TPaintBox qui se trouve dans un TScrollBox.

    Le problème c'est que TPaintBox n'a pas d'évènement 'OnKeyDown'.
    Si on le met dans un TPanel ou un TScrollBox, cela ne change rien. Eux non plus n' ont ce type d'évènement.
    De plus, TScrollBox gère lui-même les frappes clavier (flèches, pageup et down, home, end) y compris quand on
    les associe avec CTRL ou SHIFT ou ALT. De même un TTreeView présent sur la fiche.

    Reste le 'TForm.FormKeyDown', mais il faudrait pouvoir intercepter les frappes pour traiter celles destinées
    au TPaintBox et laisser passer les autres destinées aux différents contrôles se trouvant sur cette form.

    Je ne vois pas de solution, si ce n'est utiliser certaines touches fonctions mais idéalement je voudrais
    utiliser les flèches.

  2. #2
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    en mettant la propriété keypreview de ta form a true tu peux intercepter tous les onkeydown que tu veux


    mais bon

    a mon avis le plus simple et le plus efficace c'est de créer un compsant a partir de TCustomControl et faire ce que tu veux avec


    nb : c'est quoi le pb au juste ?

  3. #3
    Membre actif Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Points : 251
    Points
    251
    Par défaut
    Bonjour,

    Une solution que j'ai déjà mis en oeuvre :
    - Placer un composant gérant l'évènemenemt OnKeyDown (exemple TLabel),
    - Rendre ce composant invisible,
    - Dans le OnClick du PaintBox, forcer le focus sur le composant invisible (car un TPaintBox ne peux pas prendre le focus je crois),
    - Dans le OnKeyPress du composant invisible, on code se que l'on souhaite faire dans le TPaintBox.

    Bon code

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    Merci pour ces tuyaux, Issam et Declencher

    J'ignorais l'existence de cette propriété <KeyPreview>. Finalement c'est cette option que j'ai choisie.

    La solution me convient parfaitement. Toutes les frappes clavier passent d'abord par le <FormKeyDown> dans lequel un booléen me signale qu'il s'agit d'une frappe pour <TPaintBox>.

    Comme le paramètre <Key> de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    est modifiable, je le mets en sortie à 0 et il n'intéresse plus alors un autre contrôle éventuellement actif.

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par declencher
    - Rendre ce composant invisible,
    - Dans le OnClick du PaintBox, forcer le focus sur le composant invisible (car un TPaintBox ne peux pas prendre le focus je crois),
    - Dans le OnKeyPress du composant invisible, on code se que l'on souhaite faire dans le TPaintBox.

    Bon code
    ??????????????
    Impossible de donnée le focus à un composant invisible, surtout un Tlabel même si il est visible, non???
    Mais j'aime bien que les autre donne leur avis, car cher moi sa marche pas
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion des actions clavier sur CellEditor
    Par giannichedda dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 23/03/2010, 17h53
  2. Réponses: 5
    Dernier message: 29/12/2005, 15h03
  3. [MySQL] Problème par rapport au tutoriel sur le stockage des images en base
    Par dark_vidor dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/09/2005, 10h37
  4. Comment spécifier des raccourcis claviers sur une Form ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/06/2005, 09h05

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