Utilisation de CLIPBOARD

cs_iocha Messages postés 22 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 11 septembre 2007 - 10 juil. 2003 à 22:43
cs_iocha Messages postés 22 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 11 septembre 2007 - 16 juil. 2003 à 10:04
Bonjour à tous,

Une petite question :
Comment récupérer un texte enrichi (Saisi dans WORDPAD en RTF) dans un Richedit, en passant par le presse papier (ce qui viendrait à faire un Ctrl+C puis Ctrl+V)

Merci :question)

6 réponses

cs_RMD Messages postés 84 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 21 mai 2004
11 juil. 2003 à 18:19
Bonjour,

Tu veux récupérer la saisie à la volée ou lorsque l'utilisateur fait Ctrl+C ?

RMD

www.Logiciels-RMD.com
0
cs_iocha Messages postés 22 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 11 septembre 2007
15 juil. 2003 à 09:28
lorsque l'on fait Ctrl+C
0
cs_RMD Messages postés 84 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 21 mai 2004
15 juil. 2003 à 14:06
J'ai une source d'un logiciel espion qui intercepte les envois vers le ClipBoard pour les mettre dans un Memo (utile lors de surf et de découverte d'astuces interressantes), essaye si cela te convient en changeant le Memo par un RichEdit :

unit USpyClipBoard;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;

type
TForm1 = class(TForm)
Memo1: TMemo;
Panel1: TPanel;
BtnStop: TSpeedButton;
Enregistrer: TSpeedButton;
SpeedButton2: TSpeedButton;
SaveDialog1: TSaveDialog;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BtnStopClick(Sender: TObject);
procedure EnregistrerClick(Sender: TObject);
private
{ Déclarations privées }
procedure WMDrawClipboard(var Msg: TMessage);
message WM_DRAWCLIPBOARD;
procedure WMChangeCBChain(var Msg: TMessage);
message WM_CHANGECBCHAIN;

public
{ Déclarations publiques }
end;

var
Form1: TForm1;
NextInChain : THandle;
implementation

uses ClipBrd;

{$R *.DFM}

Var
x: integer;
Stop: Boolean;

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.WMDrawClipboard(var Msg:TMessage);
begin
if Clipboard.HasFormat(cf_text) and Stop then
begin
Memo1.Lines.Add('--- Copie '+IntToStr(x)+' ---');
Memo1.PasteFromClipboard;
Memo1.Lines.Add('');
inc(x);
End;
if NextInChain <> 0 then
SendMessage(NextInChain, WM_DrawClipboard, 0, 0)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x:=1;
ClipBoard.Clear;
Stop:=True;
NextInChain := SetClipboardViewer(Handle);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle, NextInChain);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=vk_escape then
Close;
end;

procedure TForm1.BtnStopClick(Sender: TObject);
begin
if BtnStop.Caption='Stop' then
Begin
BtnStop.Caption:='Encore';
Stop:=False;
End else
Begin
BtnStop.Caption:='Stop';
Stop:=True;
End;
end;

procedure TForm1.EnregistrerClick(Sender: TObject);
begin
if SaveDialog1.Execute then
Begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
End;
end;

end.

Voilà, il te faut :
un Memo1: TMemo;
un Panel1: TPanel;
un BtnStop: TSpeedButton;
un Enregistrer: TSpeedButton;
un SpeedButton2: TSpeedButton;
et un SaveDialog1: TSaveDialog;
sur ta fiche.

RMD

www.Logiciels-RMD.com
0
cs_iocha Messages postés 22 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 11 septembre 2007
15 juil. 2003 à 15:54
merci mais ca copie le fond, c'ets la mise en forme qui m'intéresse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_RMD Messages postés 84 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 21 mai 2004
16 juil. 2003 à 10:00
Il faudrait jongler avec la propriété HasFormat ou Assign du ClipBoard (utilisée pour copier une image dans un RichEdit par exemple), mais là, je n'ai rien de fait.
Désolé...

RMD

www.Logiciels-RMD.com
0
cs_iocha Messages postés 22 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 11 septembre 2007
16 juil. 2003 à 10:04
OK merci, ton source va quand même m'aider
beau boulot...
0
Rejoignez-nous