我想做一些简单的事情,覆盖
WM_COPY
控件的 TEdit
。
如果我尝试使用以下内容,您将无法更改
.dfm
中的类型,或者它会抱怨它不存在,因此您必须保留它TEdit
。但现在,当保存 .h/.cpp
时,抱怨它应该是 TEdit
,而我希望它是 TMyEdit
。
在 MyForm.h 中:
class TMyEdit : public TEdit
{
private:
virtual void __fastcall WndProc(TMessage &Message);
};
//---------------------------------------------------------------------------
class TMyForm : public TForm
{
// ...
TMyEdit *m_MyEditCtl; // previously TEdit *m_MyEditCtl
// ...
};
在MyForm.cpp中
// ...
void __fastcall TMyEdit::WndProc(TMessage &Message)
{
if (Message.Msg == WM_COPY) {
// I'll handle it ....
}
else {
__super::WndProc(Message);
}
}
// ...
在 C++Builder 中执行此操作的正确方法是什么,以便它可以在表单和 C++ 源文件中工作?
蒂亚!!
设计时控件必须安装在IDE中。因此,您必须将
TMyEdit
类移至单独的 .BPL
包中,然后将该包安装到 IDE 中,以便它可以注册您的类。只有这样,您才能在设计时将您的类与表单设计器一起使用。
阅读 Embarcadero 的文档:组件创建简介