我在书上看到可以从可视化的构件继承。不一定要注册,不注册的控件可以正常在程序中使用。
【例】自己定义一个中国Edit控件。特点是回车键当Tab键来使用。
type
TMyEdit=class(TEdit)
private procedure WndProc(var msg: TMessaeg); override;
end; //类的定义部分。在其中覆盖了父类的虚拟方法 WndProcprocedure TMyEdit.WndProc(var msg: TMessage);//实现的时候不要写override
begin
if (msg.msg = wm_keyDown) and (msg.wParam = vk_Return) then
parent.perform(wm_nextDlgCtl,0,0)
else
inherited;
end; //当按了回车键的时候,给父窗口发消息,移动焦点到下一个控件我把这段代码放到哪个地方啊,还有能不能直接像添加Edit控件一样添加到窗口里任意移动位置啊,能不能根据这段代码写一个演示程序啊
【例】自己定义一个中国Edit控件。特点是回车键当Tab键来使用。
type
TMyEdit=class(TEdit)
private procedure WndProc(var msg: TMessaeg); override;
end; //类的定义部分。在其中覆盖了父类的虚拟方法 WndProcprocedure TMyEdit.WndProc(var msg: TMessage);//实现的时候不要写override
begin
if (msg.msg = wm_keyDown) and (msg.wParam = vk_Return) then
parent.perform(wm_nextDlgCtl,0,0)
else
inherited;
end; //当按了回车键的时候,给父窗口发消息,移动焦点到下一个控件我把这段代码放到哪个地方啊,还有能不能直接像添加Edit控件一样添加到窗口里任意移动位置啊,能不能根据这段代码写一个演示程序啊
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN: if ActiveControl is TEdit then Perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
你可以把那段代码放在你的protected段
T中国Edit = Class(edit)
protected
private procedure WndProc(var msg: TMessaeg); override;
published
所有属性编辑器可以看见的属性。
end;
我的想法不是为了实现:回车键当Tab键来使用,而是想通过我给出的代码了解一下:是不是一定要通过菜单的component->Instrall component来安装一个改进了的控件(如:MyEdit)就能实现像Edit一样的操作(任意拖动位置,改变大小),还是有其它的途径???。(因为我觉得这样稍微改变一下控件的功能就要安装一下成为另一个相同类型的,只是增加某些功能的控件,不是太好)。
最好能根据我的代码写一个实现回车键当Tab键功能的演示,这样我可以判断我的思路是对还是错。