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 :

Reproduire un évenement


Sujet :

Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Reproduire un évenement
    Bonjour à toutes et à tous,

    J'utilise cette evenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFInfosBase.ListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_RETURN then
      Begin
        RetourPourRichEdit := ListBox1.Items[ListBox1.itemindex];
        Close;
      end;
    end;
    Pour des raisons obscur je dois reproduire cette evenement dans l'evenement doubleclique, mais cela compile pas
    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
    procedure TFInfosBase.ListBox1DblClick(Sender: TObject);
    begin
    
      ListBox1KeyDown(Sender,[VK_RETURN],[ssShift]); Marche pas
      ListBox1KeyDown(Sender,VK_RETURN,[ssShift]); Marche pas 
      ListBox1KeyDown(Sender,VK_RETURN,ssShift); Marche pas
      ListBox1KeyDown(Sender,#13,[ssShift]) ; Marche pas
      ListBox1KeyDown(Sender,#13,Nil); Marche pas
      ListBox1KeyDown(Sender,#13,emptyparam); Marche pas
    
    
    
    //  RetourPourRichEdit := ListBox1.Items[ListBox1.itemindex];
    //  Close;
    end;
    Je vois vraiment pas les paramètres qu'ils faut envoyés.

    MErci de vos lumières

  2. #2
    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
    Salut

    Moi j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1KeyDown(nil,VK_RETURN,[]);
    Mais si tu dis que ca marche pas ...
    Qu'est ce qu'il se passe exactement ?

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Salut

    Moi j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1KeyDown(nil,VK_RETURN,[]);
    Mais si tu dis que ca marche pas ...
    Qu'est ce qu'il se passe exactement ?
    Salut mick,

    Alors même ta proposition fonctionne pas, j'ai ce message :

    types of actual and formal var parameters must be identical

    pour info : L'exemple de la FAQ ce limite à FormKeyPress qui comporte que 2 parametres sender et key en type char

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut,

    Buzz essaye ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.ListBox1DblClick(Sender: TObject);
    var
      Key :word;
    begin
    Key := VK_RETURN;
    ListBox1KeyDown(sender,Key,[]);
    end;
    A+

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut NABIL,

    Effectivement ta solution regle mon message d'erreur.
    Je te remercie.


    Mais...parcqu'il y a un mais !!! lol, en fait cela ne regle pas mon probleme.


    Alors je vais l'expliquer.

    Quand je fait entrer ou doubleclique (maintenant) la valeur de RetourPourRichedit est bien alimentée, mais le truc de malade c'est que cette valeur s'écrit bien dans le RICHEEDIT quand je fais ENTREE mais ne fonctionne pas au doubleclique !! en fait quand je double clique je reviens dans mon richeedit et je suis obliger d'appuyer sur une touche pour voir apparaitre la valeur de RetourPourRichedit !! j'arrive pas à comprendre.


    @+

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Bonjour,

    Quand je fait entrer ou doubleclique (maintenant) la valeur de RetourPourRichedit est bien alimentée, mais le truc de malade c'est que cette valeur s'écrit bien dans le RICHEEDIT quand je fais ENTREE mais ne fonctionne pas au doubleclique !! en fait quand je double clique je reviens dans mon richeedit et je suis obliger d'appuyer sur une touche pour voir apparaitre la valeur de RetourPourRichedit !! j'arrive pas à comprendre.
    Buzz, il y a une erreur dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFInfosBase.ListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_RETURN then
      Begin
        RetourPourRichEdit := ListBox1.Items[ListBox1.itemindex];//ici se situe ton erreur.
        Close;
      end;
    end;
    si tu veux ajouter à chaque fois une ligne dans le RichEdit, il suffit de faire un "Add" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if Key = VK_RETURN then
      Begin
        RetourPourRichEdit.Lines.Add(ListBox1.Items[ListBox1.ItemIndex]) ;
        Close;
      end;
    end;
    sinon, si tu veux modifier la valeur de la première ligne de ton RichEdit, tu modifie la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {...}
    RetourPourRichEdit.Lines.Text:=ListBox1.Items[ListBox1.ItemIndex] ;
    A+

    NABIL74

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut NABIL,

    Je ne fais pas d'erreur mais j'ai pas tout dit en fait.

    Je suis dans une form1 ou est positionner un Richedit, lorsque l'utilisatuer appuye sur le caractère '?' j'ouvre une form en showmodal ou est positionné cette fameuse listbox. c'est pour cela que je passe par une variable global RetourPourRichEdit.

    Voici les procedures.

    Dans la form principal sur l'evenement Keypress du RichEdit voici la procédure :
    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
    procedure TFTravail.RichEditKeyPress(Sender: TObject; var Key: Char);
    Var
      PosCar, OldPosCar, i: Integer;
      Pt: Tpoint;
      NomDeLaTable: String;
      PTreeNode: TTreeNode;
      Champs : TStringList;
    begin
      if TRichEdit(sender).Focused then
      Begin
        if (Key = '.') or (Key = '?') then
        Begin
          Pt := TRichEdit(Sender).CaretPos; // Récupération des coordonnées caractères
          GetCaretPos(Pt); //  Tranformation en coordonnée écran.
          With TFInfosBase.Create(Self) do
          Begin
            try
              ListBox1.Clear;
              RetourPourRichEdit := '';
              // On ouvre la fenetre au bon endroit
              With TRichEdit(Sender).ClientToScreen(Pt) do
              begin
                Left := X;
                Top := Y;
              end;
              if Key = '.' then
              begin
                // On doit récupérer le mot à gauche du point             
                // ... Traitement
    
               // Maintenant on rempli la listbox
                 // ... Traitement
                 Choix := 1;
              end
              else
              Begin
                if (Key = '?') then
                Begin
                  ListBox1.Items := '';// <== on rempli la liste box de l'autre form
                  Choix := 2;
                end
              end;
              ShowModal;  // <==  ICI la fenetre du listebox s'ouvre
            finally
              free;
            end;
          end;
          ToucheAcceptee := True;
          // ...
        end;
      end;
    end;
    Et sur l'évenbement KeyUp de la form principal :

    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
    procedure TFTravail.RichEditKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if ToucheAcceptee then
      Begin
        Case Choix of
          1: TRichEdit(Sender).SelText := RetourPourRichEdit;
          2: Begin  // On retire le '?'
              TRichEdit(Sender).SelStart := TRichEdit(Sender).SelStart - 1;
              TRichEdit(Sender).SelLength := 1;
              TRichEdit(Sender).ClearSelection;
              TRichEdit(Sender).SelText := '['+RetourPourRichEdit+']';
             end;
        end;
      end;
      ToucheAcceptee :=False;
      RetourPourRichEdit := '';
      Choix:= 3;
    end;
    donc j'ai remarqué que si je doubleclique dans la form FinfoBase l'evenement KeyUp n'as pas lieu !!! Et je peux pas faire autrement car si je mets mon traitement keyup à la fin de la procédure KeyPress elle fonctionne pas correctement.

    donc ici le seukl souci que j'ai c'est quand je DoubleClique dans la form InfoBase toute les valeurs sont bonnes mais l'evenement KeyUp de la form principal n'ai pas executé si j'essai de faire un Keyup(Sender,Xkey,[]) j'ai une erreur dans delphi.

    Avez-vous une idée ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut Buzz,

    donc ici le seukl souci que j'ai c'est quand je DoubleClique dans la form InfoBase toute les valeurs sont bonnes mais l'evenement KeyUp de la form principal n'ai pas executé si j'essai de faire un Keyup(Sender,Xkey,[]) j'ai une erreur dans delphi.
    t'as essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFInfosBase.FormDblClick(Sender: TObject);
    var
    Key :word;
    begin
    Key := VK_RETURN;
    FTravail.RetourPourRichEditKeyUp(sender,Key,[]);
    end;
    avec ça,je n'ai pas de message d'erreur.

    A+

    NABIL74

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par NABIL74 Voir le message
    salut Buzz,



    t'as essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFInfosBase.FormDblClick(Sender: TObject);
    var
    Key :word;
    begin
    Key := VK_RETURN;
    FTravail.RetourPourRichEditKeyUp(sender,Key,[]);
    end;
    avec ça,je n'ai pas de message d'erreur.

    A+

    NABIL74
    Là je génére une belle erreur... de violation.

    merci

  10. #10
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Buzz,
    jette un coup d'œil ici:

    a+
    Fichiers attachés Fichiers attachés

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut NABIL,

    Merci de ton implication.

    Mais tu ne fais pas vraiment la bonne opération. Le double clique à lieu dans le listeBox et non dans la form principal.
    De plus l'affichage d'un showmessage('Salut buzz') de l'evenement KeyUp n'a pas la même finalité qu'un ajout de text dans le Richedit, en fait le showmessage fonctionne aussi chez moi !! mdr.

    A plus

  12. #12
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Regarde plutot cet exemple,

    Tu remarqueras que si tu doubleclique dans le listbox, le riche edit ne recupere pas desuite le text, il faut par exemple appuyer sur fleche droite et tu vera le text apparaitre. J'aimerais que cela soit instantané au retour du close de la form2.

    A plus

  13. #13
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 290
    Points : 1 941
    Points
    1 941
    Par défaut
    J'ai un peu modifié à ma façon. Je ne sais pas si ça te conviendras. Mais le texte s'affiche.

    Edit: Je trouve un poil bizarre d'appeler un évéènement de type Key dans un autre évènement de type Key. D'ailleurs lorsque l'on utilise ton code, on entends un Bip, je me demande si la cause du problème ne serait pas ça.
    Fichiers attachés Fichiers attachés

  14. #14
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut,

    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
    procedure TFInfosBase.ListBox1DblClick(Sender: TObject);
    var Key :word;
        S:string;
        I:integer;
    begin
    Key := VK_RETURN;
    //xRetourPourRichEdit := 'Test';
     
    for I := 0 to ListBox1.Items.Count - 1 do
    if ListBox1.Selected[I] then
          S:= ListBox1.Items.Strings[i];
     
    FTravail.RetourPourRichEdit.Text:= S;
     
    FTravail.RetourPourRichEditKeyUp(sender,Key,[]);
    Close;
    end;
    Buzz, Tu remarqueras que si tu fais un double-clique dans le listbox, le RichEdit récupère tout de suite le texte sélectionné dans le ListBox.

    je ne sais pas encore si c'est ça que tu cherches à obtenir.

    A+

    NABIL74

  15. #15
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    NABIL : ta proposition peu se réduit par un ListBox1.items[Listbox1.Itemindex] que j'utilise déjà.

    Linkin : Merci de ta proposition qui se rapproche de ma demande, mais je ne retourne pas un result := 'test'; mais un result := ListBox1.items[Listbox1.Itemindex] et dans ce cas ca bug.
    Pourquoi je voudrais faire marcher un keyup dans un keypress c'est du au probleme que je rencontre si l'utilisateur utilise la souris au lieu du entrée dans ce cas la procédure Keyup n'as pas lieu !!! et c'est la où est tout le probleme.

    Si je n'utilise pas de keyUp pour faire apparaitre mon choix du listbox lors de l'appuie sur le '.' et au retour du choix dans la liste box, mon caractère point apparait apres la selection et non avant (je sais pas si je suis claire)
    au lieu d'avoir : xxxxx.xxx j'ai xxxxx xxxx. (le point est après) mais grace à la procedure keyup sa fonctionne parfaitement (sauf au clique souris CAR KEYUP n'ai pas exectuté !!!) pour le caractère '?' c'est différent je doit faire disparaitre le ? du richedit et ecrire le choix du list box à la place, et tout cela ne fonctionne pas bien si je n'execute pas ma procédure KEYUP.

    Donc je tourne en rond !!! même ta proposition ne fonctionne pas.

    pour reprendre le dileme :
    1 l'utilisateur tape des mots dans le richeedit
    2a il appuie sur le '?' apparait alors une liste de mot (qui se rempli avant le show)
    3a il fait sont choix et soit il double clique soit il appuie sur entrée
    4a j'écris ce choix à l'endroit où se trouve le ? et j'éfface le ?

    2b il appuie sur le '.' apparait alors une autre liste de mots (qui se rempli également avant le show)
    3a il fait sont choix et soit il double clique soit il appuie sur entree
    4a au retour dans le richeedit je doit laissé le point et ecrire le mot choisie apres

    Voilà le truc qui me prends la tête depuis 2 jours.

    Merci à vous.

  16. #16
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut,
    2b il appuie sur le '.' apparait alors une autre liste de mots (qui se rempli également avant le show)
    3a il fait sont choix et soit il double clique soit il appuie sur entree
    4a au retour dans le richeedit je doit laissé le point et ecrire le mot choisie apres
    Buzz,je pense qu'il faut controler l'appui de la touche "entrée" et le double-clique du ListBox en ajoutant le code au 2 événements:"dblclique" et "KeyPress" .

    supprimer ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      if ToucheAcceptee then
      Begin
        Case Choix of
          1: TRichEdit(Sender).SelText := RetourPourRichEdit;
          2: Begin  // On retire le '?'
              TRichEdit(Sender).SelStart := TRichEdit(Sender).SelStart - 1;
              TRichEdit(Sender).SelLength := 1;
              TRichEdit(Sender).ClearSelection;
              TRichEdit(Sender).SelText := '['+RetourPourRichEdit+']';
             end;
        end;
    parceque si on tiens compte de ce code, il efface la valeur que nous avons attribuée au RichEdit.

    qu'en penses-tu?

  17. #17
    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
    Salut

    Je me plonges dans ton probleme pour la premiere fois ...

    Bon, des que l'utilisateur tape "." (ou "?"), une fenetre s'affiche. Des que l'utilisateur double clique sur le mot, ou le valide avec entrée, le mot doit s'afficher dans la form principale.
    Plusieurs questions :
    - Tu utilise un evenement OnKeyUp , pourquoi pas un OnKeyPress ?
    - Est ce que cet evenement est bien celui de la LISTBOX et non pas de ton richedit ?
    - Meme question pour le double clic (ca, vu ton exe, ca devrait etre bon) ?

    Voila, si j'ai mal saisi un truc, dis le

  18. #18
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Salut

    Je me plonges dans ton probleme pour la premiere fois ...

    Bon, des que l'utilisateur tape "." (ou "?"), une fenetre s'affiche. Des que l'utilisateur double clique sur le mot, ou le valide avec entrée, le mot doit s'afficher dans la form principale.
    Plusieurs questions :
    - Tu utilise un evenement OnKeyUp , pourquoi pas un OnKeyPress ?
    - Est ce que cet evenement est bien celui de la LISTBOX et non pas de ton richedit ?
    - Meme question pour le double clic (ca, vu ton exe, ca devrait etre bon) ?

    Voila, si j'ai mal saisi un truc, dis le
    Plus on est de fou...plus on rit...lol

    - Tu utilise un evenement OnKeyUp , pourquoi pas un OnKeyPress ? Comme je le dit plus haut sans l'évenement OnKeyUp la touche '.' Ou '?' n'ai...comment dire... pas encore fini d'arriver dans le richeedit...donc si je ne fais pas le traitement de mettre le text choisi du listbox dans le onkeyup il se place au mauvaise endroit pour le '.' et n'efface pas le ? pour le '?'

    C'est vachement plus facile a expliquer à l'orale qu'a l'écris !!! relis bien le text sur le topic avant.


    - Est ce que cet evenement est bien celui de la LISTBOX et non pas de ton richedit ?
    ??? euhhhhhh la je pige pas la question des evenements il y en à partout !! regarde le prog tu comprendras mieux je penses.


    Bye et merci à vous...

  19. #19
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Buzz,
    voici le code "OnDblClick":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFInfosBase.ListBox1DblClick(Sender: TObject);
    var Key :word;
        S:string;
        I:integer;
    begin
    Key := VK_RETURN;
    for I := 0 to ListBox1.Items.Count - 1 do
    if ListBox1.Selected[I] then
    S:= ListBox1.Items.Strings[i];
    FTravail.RetourPourRichEdit.Text:= S;
    FTravail.RetourPourRichEditKeyUp(sender,Key,[]);
    Close;
    end;
    et voici le code de "OnKeyPress" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TFInfosBase.ListBox1KeyPress(Sender: TObject; var Key: Char);
    var Keyword :word;
        S:string;
        I:integer;
    begin
    Keyword := VK_RETURN;
    if Keyword = VK_RETURN then  begin
    for I := 0 to ListBox1.Items.Count - 1 do
    if ListBox1.Selected[I] then
    S:= ListBox1.Items.Strings[i];
    FTravail.RetourPourRichEdit.Text:= S;
    end;
    Close;
    end;
    si on exécute ce code, il garde le "." et ajoute le mot sélectionné après.

    a+

  20. #20
    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 BuzzLeclaire Voir le message
    - Tu utilise un evenement OnKeyUp , pourquoi pas un OnKeyPress ? Comme je le dit plus haut sans l'évenement OnKeyUp la touche '.' Ou '?' n'ai...comment dire... pas encore fini d'arriver dans le richeedit...donc si je ne fais pas le traitement de mettre le text choisi du listbox dans le onkeyup il se place au mauvaise endroit pour le '.' et n'efface pas le ? pour le '?'
    Si c'est bon, j'ai compris. Mais je ne crois pas que ce que tu dises soit vrai. Voila le déroulement logique des étapes pour moi :

    On est sur le RichEdit :
    - L'utilisateur Appuye sur "."
    - Rien ne se passe (ca s'affiche simplement ...)
    - L'utilisateur relache "." . L'évenement OnKeyPress du richedit se lance (est ce bien la ou pas qu'il se lance, j'ai un doute ...). Cet évenement affiche la listbox voulue et en profite pour sauvegarder si c'est un "." ou un "?" qui a été tapé.
    - L'utilisateur choisis un élement de la listbox.
    - Soit il double clique : l'évenement OnDblClick de la listbox se lance. Cet évenement a pour but d'ecrire sur le richedit de départ la phrase voulue : en effet, a ce moment la, on a déja tout les éléments pour le faire, pourquoi attendre ??? Puis ferme la listbox.
    - Soit il appuie sur entrer : l'évenement OnKeyPress de la listbox se lance. Cet évenement a pour but d'ecrire (si la touche est entrer) sur le richedit de départ la phrase voulue : en effet, a ce moment la, on a déja tout les éléments pour le faire, pourquoi attendre ??? Puis ferme la listbox.

    J'ai l'impression qu'il y a un mélange dans tes deux programmes entre les deux key press, Je ne crois pas que ce soit exactement ce que ton programme fait.

    Pour la réponse de NABIL, j'ai l'impression qu'elle est plus proche de ce que j'ai expliqué !!

    Bonne chance !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Reproduire l'évenement MouseDown avec "Entrée" et "TAB"
    Par apt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/12/2011, 21h14
  2. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  3. Réponses: 6
    Dernier message: 02/05/2005, 14h00
  4. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  5. Réponses: 4
    Dernier message: 21/05/2004, 11h24

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