使用OnIdle事件隨時監視剪貼板內容以改變彈出菜單的可執行項。
在Form1的.h的private加上:
void __fastcall OnIdle(TObject* Sender,bool& Done);
在Form1的.cpp內加上:
void __fastcall TForm1::OnIdle(TObject* Sender,bool& Done)
{
bool TextSelected=DBRichEdit1->SelLength>0;
N17->Enabled=TextSelected;//剪切,復制,清除
N18->Enabled=TextSelected;
N20->Enabled=TextSelected;
bool CBHasText=Clipboard()->HasFormat(CF_TEXT);// 需加入#include<Clipbrd.h>
N19->Enabled=CBHasText;//粘貼
bool HasText=RichEdit1->Lines->Count>0;
N21->Enabled=HasText;//全選
bool HasChanged=RichEdit1->Modified;
ToolButton2->Enabled=HasChanged;
ToolButton4->Enabled=HasChanged;
}
在Form1的OnCreate內加上:
Application->OnIdle=OnIdle;