关于RichEdit复制粘贴的问题

gaoxing215 2006-11-10 11:35:58
自己用PopupMenu做了个右键可以复制、粘贴的菜单,并把ShortCut分别设为Ctrl+C和 Ctrl+V。
发现要先用鼠标右键在RichEdit中点击过后,Ctrl+C和 Ctrl+V快捷键才能使用,如果一开始运行程序时鼠标左键点击RichEdit,Ctrl+C和 Ctrl+V快捷键并不能使用。请问怎么回事?
void __fastcall TForm1::N3Click(TObject *Sender)
{
TComponent *pComponent = PopupMenu1->PopupComponent;
if (pComponent)
{
if (pComponent->ClassNameIs("TRichEdit"))
((TRichEdit *)pComponent)->CopyToClipboard();
else
MessageBeep(0);
}
else
MessageBeep(0);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)
{
TComponent *pComponent = PopupMenu1->PopupComponent;
if (pComponent)
{
if (pComponent->ClassNameIs("TRichEdit"))
((TRichEdit *)pComponent)->PasteFromClipboard();
else
MessageBeep(0);
}
else
MessageBeep(0);


}
...全文
403 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoxing215 2006-11-16
  • 打赏
  • 举报
回复
在RichEdit1Enter:
PopupMenu1->PopupComponent =RichEdit1;
问题解决,多谢大家热心帮忙!
FFSB 2006-11-10
  • 打赏
  • 举报
回复
或者在RichEdit1Enter:
PopupMenu1->PopupComponent = Sender;
FFSB 2006-11-10
  • 打赏
  • 举报
回复
对不起,上面错了!
因为PopupComponent为空你只好直接用RichEdit1
FFSB 2006-11-10
  • 打赏
  • 举报
回复
RichEdit1->TabStop=0;
或RichEdit1->SetFocus();
或Form1->ActiveControl = RichEdit1
BlueDeepOcean 2006-11-10
  • 打赏
  • 举报
回复
应该可以结论了。就是操作对象没有获得焦点的原因。
在没有获得焦点的情况下,默认的为系统(Windows)的操作。
wood542344 2006-11-10
  • 打赏
  • 举报
回复
说到本质就是你的PopMenu是关联到这个窗体上还是关联到这个RichEdit 上。
如果是关联到窗体上的话,那么这个Ctrl +C与Ctrl+V只能在窗本激活的情况下可以用。
Form->active = true;
或是RichEdit上的话就是RichEdit->setFouces。。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧