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
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
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.
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
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager