我有一个表单类TfrmWelcome
,我希望能够动态添加
在表单的主要部分(frmWelcome.MainPanelSourceEditor
)中单击按钮时的备忘录。
我对某些代码的尝试失败如下。我收到了错误 "未声明的标识符WelcomeMemo"。我怎么能让这个编译和工作?
type
WelcomeMemo : TMemo;
end;
implementation
procedure SetHelpWelcome;
begin
WelcomeMemo : TMemo.Create(frmWelcome);
with TMemo(FindComponent('WelcomeMemo')) do
begin
Parent := frmWelcome.MainPanelSourceEditor;
答案 0 :(得分:7)
如果您要做的是在运行时向frmWelcome添加备忘录,那么更好(但仍然不是很好)的方法就是这样:
procedure SetHelpWelcome;
var
WelcomeMemo : TMemo;
begin
WelcomeMemo := TMemo.Create(frmWelcome);
WelcomeMemo.Parent := frmWelcome.MainPanelSourceEditor;
// set any other properties of WelcomeMemo here.
end;
这可以避免with
(你绝不应该使用它,特别是如果你是初学者)和完全可以避免FindComponent
找到你不需要在第一时间找到的东西通过赋值给WelcomeMemo
局部变量。
但这仍然是做你想做的事情的一种相当简单的方法。最好将WelcomeMemo
作为表单的成员,并定义表单的方法来创建和初始化它;然后,您可以从要用于创建它的按钮的OnClick
处理程序中调用该方法。像(未经测试的)
TfrmWelcome = Class(TForm)
private
fWelcomeMemo : TMemo;
procedure SetUpWelcomeMemo;
[...]
end;
procedure TfrmWelcome.SetUpWelcomeMemo;
begin
if fWelcomeMemo <> Nil then exit; // to avoid creating it more than once
fWelcomeMemo := TMemo.Create(Self);
fWelcomeMemo.Parent := Self.MainPanelSourceEditor;
// set any other properties of WelcomeMemo here.
end;
除了其他任何内容之外,这可以避免将备忘录的所有者设置为特定的TfrmWelcome实例frmWelcome
,这是一个等待发生的事故,因为它可能不是您实际想要使用的实例。
但就像@J ..说的那样,你真的需要看一下初学者的教程,如果你在使用反复试验时就像你这样听起来一样。