如何利用 message 選擇全部及複製至剪貼簿

有關Delphi 的語法, 程式, 等
回覆文章
頭像
tim
文章: 1384
註冊時間: 2008年 11月 26日, 00:49

如何利用 message 選擇全部及複製至剪貼簿

文章 tim »

可以 trace 一下 TCustomEdit 中的 Clear, ClearSelection, CopyToClipboard, CutToClipboard,
PasteFromClipboard, Undo, ClearUndo, SelectAll 的原始碼如後, 以取得其對應的 message.
如: selectall 是送出EM_SETSEL message, 複製是送出WM_COPY.

代碼: 選擇全部

     
    procedure TCustomEdit.Clear; 
    begin 
      SetWindowText(Handle, ''); 
    end; 
     
    procedure TCustomEdit.ClearSelection; 
    begin 
      SendMessage(Handle, WM_CLEAR, 0, 0); 
    end; 
     
    procedure TCustomEdit.CopyToClipboard; 
    begin 
      SendMessage(Handle, WM_COPY, 0, 0); 
    end; 
     
    procedure TCustomEdit.CutToClipboard; 
    begin 
      SendMessage(Handle, WM_CUT, 0, 0); 
    end; 
     
    procedure TCustomEdit.PasteFromClipboard; 
    begin 
      SendMessage(Handle, WM_PASTE, 0, 0); 
    end; 
     
    procedure TCustomEdit.Undo; 
    begin 
      SendMessage(Handle, WM_UNDO, 0, 0); 
    end; 
     
    procedure TCustomEdit.ClearUndo; 
    begin 
      SendMessage(Handle, EM_EMPTYUNDOBUFFER, 0, 0); 
    end; 
     
    procedure TCustomEdit.SelectAll; 
    begin 
      SendMessage(Handle, EM_SETSEL, 0, -1); 
    end; 
     
     
     
    //以下為一個使用的範例. 其中利用了 TClipBoard 來進行檢查剪貼簿中的資料 
    //是否為 文字. 
     
    // 記得 uses clipbrd 
    procedure Tform1.Button1Click(Sender: TObject); 
    var 
      ClipBoard:TClipBoard; 
    begin 
     
      ClipBoard:=TClipBoard.Create; 
      ClipBoard.Clear; 
     
      SendMessage(Edit1.Handle,EM_SETSEL,0,-1); 
      SendMessage(Edit1.Handle,WM_COPY,0,0); 
     
      if Clipboard.Hasformat(CF_TEXT) then 
      begin 
        Edit2.Clear; 
        Edit2.PasteFromClipBoard; 
      end; 
      ClipBoard.free; 
    end; 
多多留言, 整理文章, 把經驗累積下來.....
回覆文章