有時候你可能會需要讓使用者在 Memo 貼上文字之後自動換行。要達到這樣的效果有幾種方法辦得到。第一種是在 OnMouseUp event 裡頭偵測使用者是否按下了 Ctrl+V。不過這方法並不是很好,所以在這裡我要介紹第二種方法。第二種方法是直接偵測送到 MemoWM_PASTE 訊息。



// 在 Unit1.h

private: // User declarations

TWndMethod OldMemoProc;

void __fastcall NewMemoProc(TMessage &Message);





// 在 Unit1.cpp

void __fastcall TForm1::NewMemoProc(TMessage &Message)

{

OldMemoProc(Message);

if (Message.Msg == WM_PASTE) // 若是貼上

Memo1->Lines->Add(""); // 就自動換行

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

OldMemoProc = Memo1->WindowProc;

Memo1->WindowProc = NewMemoProc;

}




全站熱搜

Nelson 發表在 痞客邦 留言(0) 人氣()