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 :

onkeypress sur Timage


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut onkeypress sur Timage
    je voudrai savoir comment simuler l'evenemnt onkeypress ou onkeydown sur un Tpanel ou un TiMAGE

    mon probleme :Creation une grille de Timage dans le style mot croisée
    chaque case est un Tbitmap ou un Timage ou autre sur un Tpanel
    je sais creer une collection d'objets avec leur evenement mais certain objets non pas l'evenement Onkeypress exsite t(il un moyen d'en creer un ou de le smuler .
    je suis arriver à un resultat en creant ma grille directement sur la form principale en passant par l'evenement Form.onKeyPress mais des que jutilise d'autre objets
    plus rien

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut evenement onkeypress Timage
    je vous ai envoyer une question sur la possibilte de mettre un evenement OnKeypress sur un timage ou autre objet n'ayant pas cet evenement
    avec le code ci-dessous
    en mettant le timage directement sur la forme cela fonctionne bien ,mon caractere saisie au clavier de dessine dans Image1
    mais des que je le positionne sur le Tpanel plus rien
    comment dessiner un caractere saisi au clavier sur un Bitmap se trouvant sur unTpanel ?
    j'essai de me faire une fonction ou procedure avec Tmessage mais pas de resultat pour l'instant
    . merci pour les aides que vous m'avez dejas apportées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Image1: TImage;
        procedure FormKeyPress(Sender: TObject; var Key: Char);
        procedure FormPaint(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        c:string;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    c:=key;
    form1.Caption:=c;
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    begin
    image1.Canvas.TextOut(0,0,c);
    end;
     
    end.

  3. #3
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    un truc comme ça peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        PaintBox1: TPaintBox;
        procedure PaintBox1Paint(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormKeyPress(Sender: TObject; var Key: Char);
      private
        { Déclarations privées }
        text:string;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     paintbox1.Parent:=panel1;
     paintbox1.Align:=alclient;
    end;
     
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
     text:=text+Key;
     paintbox1.Invalidate;
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    var bmp:Tbitmap;
    begin
     try
       bmp:=Tbitmap.Create;
       with bmp do
       begin
        width:=paintbox1.ClientWidth;
        height:=paintbox1.ClientHeight;
       end;
       bmp.Canvas.TextOut(0,0,text);
       paintbox1.canvas.Draw(0,0,bmp);
     finally
      bmp.free;
     end;
    end;
     
    end.
    a+

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    TImage est un TGraphicControl
    TForm et TPanel sont des TWinControl

    seuls les TWinControl sont connus de Windows et reçoivent les évènements clavier et souris.

    la VCL propage les évènements souris sur le GraphicControl mais pas les évènements clavier qui nécessitent un Focus.

    donc la question est de savoir quel composant a le focus car c'est lui qui reçoit les évènements clavier...voir également TForm.KeyPreview
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par montecristo Voir le message
    je voudrai savoir comment simuler l'evenemnt onkeypress ou onkeydown sur un Tpanel ou un TiMAGE

    mon probleme :Creation une grille de Timage dans le style mot croisée
    chaque case est un Tbitmap ou un Timage ou autre sur un Tpanel
    je sais creer une collection d'objets avec leur evenement mais certain objets non pas l'evenement Onkeypress exsite t(il un moyen d'en creer un ou de le smuler .
    je suis arriver à un resultat en creant ma grille directement sur la form principale en passant par l'evenement Form.onKeyPress mais des que jutilise d'autre objets
    plus rien
    Pourquoi faire une grille de TImage et pas simplement une seule image sur laquelle la grille est dessinée.
    Ensuite pour chaque objet qui possède un évènement OnKeypressed lui attribuer le même fonction. Ce qui fait que dès qu'une touche est appuyée sur n'importe quel objet c'est traité comme si c'était toujours l'image qui avait le focus.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  6. #6
    Membre chevronné

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Pourquoi faire une grille de TImage et pas simplement une seule image sur laquelle la grille est dessinée.
    Ensuite pour chaque objet qui possède un évènement OnKeypressed lui attribuer le même fonction. Ce qui fait que dès qu'une touche est appuyée sur n'importe quel objet c'est traité comme si c'était toujours l'image qui avait le focus.
    Je suis d'accord ... Mais il y a encore plus simple je pense. Tu pourrais travailler avec une TStringGrid ... Dans ce cas la, tu peux facilement obtenir les informations de clic/double clic avec OnMouseDown, et la touche préssée avec OnKeyPress ...

    Bonne chance

Discussions similaires

  1. Graphisme rectangle de sélection sur TImage
    Par colorid dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2008, 12h59
  2. Haide sur TImage ?
    Par fimisek dans le forum C++Builder
    Réponses: 3
    Dernier message: 28/02/2007, 17h06
  3. Utilisation TPopupMenu sur TImage
    Par Franck26 dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/01/2007, 22h46
  4. onkeypress sur prompt ????
    Par heider dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/04/2006, 10h32
  5. onKeyPress sur les flèches du clavier
    Par trepidelhia dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/01/2006, 18h42

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