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

Langage Delphi Discussion :

Presse-Papier et evenements


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut Presse-Papier et evenements
    Bonjour,

    Comment détecter le copier-coller dans le presse-papier pour passer une chaine de caractères en majuscules avant de la copier dans une cellule de tdbgrid ?

    Si quelqu'un a une idée ?

    Merci

    Michel

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Je crois qu'il n'existe pas d'autre moyen que de vérifier périodiquement la présence de contenu dans le presse-papier.

  3. #3
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    Je pensai qu'il était peut-être possible d'intercepter l'évènement 'Copier-Coller' au moment de son action. Cependant je ne connais pas le nom de l'évènement provoqué par cette action.

    Si la piste semble bonne ou totalement irréaliste, merci de passer message ou complément d'info

    A+
    michel

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Tu vas y arriver avec ceci qui justement 'intercepte' le presse-papier (message = WMChangeCBChain(var Msg: TMessage)):


    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
     
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
     
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        procedure WMDrawClipboard(var Msg: TMessage); message WM_DRAWCLIPBOARD;
        procedure WMChangeCBChain(var Msg: TMessage); message WM_CHANGECBCHAIN;
      public
      end;
     
    var
      Form1        : TForm1;
      NextInChain  : THandle;
      OurFormat    : Integer;
     
    implementation
     
    {$R *.DFM}
    uses ClipBrd;
     
    procedure TForm1.WMDrawClipboard(var Msg:TMessage);
     
    begin
     if Clipboard.HasFormat(cf_text) then begin
      Memo1.Lines.Clear;
      Memo1.PasteFromClipboard;
      end;
     
     if NextInChain <> 0 then
      SendMessage(NextInChain, WM_DrawClipboard, 0, 0)
    end;
     
    procedure TForm1.WMChangeCBChain(var Msg: TMessage);
    var
      Remove, Next: THandle;
    begin
      Remove := Msg.WParam;
      Next := Msg.LParam;
     with Msg do
      if NextInChain = Remove then
       NextInChain := Next
      else if NextInChain <> 0 then
       SendMessage(NextInChain, WM_ChangeCBChain, Remove, Next)
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
     
    begin
     NextInChain:=SetClipboardViewer(Handle);
     
     if OpenClipboard(Handle) then begin
       EmptyClipboard;
       CloseClipboard();
     end;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      ChangeClipboardChain(Handle, NextInChain);
    end;
     
    end.

    -----------------------
    Ajoute un memo à la form et connecte les deux évènements OnCreate et OnDestroy
    -----------------------

    Tout texte copié au presse-papier sera intercepté par le memo (ou label, ou edit etc.). Ensuite tu ajoutes ce que tu veux avant ce texte etc.

  5. #5
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    Merci rpoulin

    msuire

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par msuire Voir le message
    Merci rpoulin

    msuire

    Ok - je l'ai encore simplifié a la dernière édition.

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

Discussions similaires

  1. [VBA] Vider le presse papier
    Par Kelyane dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/10/2003, 12h05
  2. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  3. [VBA-E] Vider le presse-papier
    Par tinej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2002, 09h33
  4. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46
  5. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51

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