如何使用delphi在类中制作动态备忘录
我有一个表单类如何使用delphi在类中制作动态备忘录,delphi,Delphi,我有一个表单类TfrmWelcome,我希望能够动态添加 当在表单的主要部分(frmWelcome.MainPanelSourceEditor)中单击按钮时,会显示一个备忘录 下面是我对某些代码的失败尝试。我得到了错误 “未声明的标识符”。我怎样才能让它编译并工作 type WelcomeMemo : TMemo; end; implementation procedure SetHelpWelcome; begin WelcomeMemo : TMemo.Create(frmW
TfrmWelcome
,我希望能够动态添加
当在表单的主要部分(frmWelcome.MainPanelSourceEditor
)中单击按钮时,会显示一个备忘录
下面是我对某些代码的失败尝试。我得到了错误
“未声明的标识符”。我怎样才能让它编译并工作
type
WelcomeMemo : TMemo;
end;
implementation
procedure SetHelpWelcome;
begin
WelcomeMemo : TMemo.Create(frmWelcome);
with TMemo(FindComponent('WelcomeMemo')) do
begin
Parent := frmWelcome.MainPanelSourceEditor;
如果您试图在运行时向frmWelcome添加备忘录,那么更好(但仍然不是很好)的方法如下:
procedure SetHelpWelcome;
var
WelcomeMemo : TMemo;
begin
WelcomeMemo := TMemo.Create(frmWelcome);
WelcomeMemo.Parent := frmWelcome.MainPanelSourceEditor;
// set any other properties of WelcomeMemo here.
end;
这就避免了使用和(尤其是初学者不应该使用)以及完全可以避免的FindComponent
,如果通过对WelcomeMemo
局部变量的赋值来捕获某个您不需要首先查找的内容
但这仍然是一个相当愚蠢的方式做你想做的事。最好将WelcomeMemo
作为表单的成员,并定义表单的方法来创建和初始化它;然后,您可以从要用于创建该方法的按钮的OnClick
处理程序中调用该方法。类似于(未经测试)
TfrmWelcome=Class(TForm)
私有的
fWelcomeMemo:TMemo;
程序备忘录;
[...]
终止
程序TfrmWelcome.SetUpWelcomeMemo;
开始
如果fWelcomeMemo Nil,则退出;//避免多次创建它
fWelcomeMemo:=TMemo.Create(Self);
fWelcomeMemo.Parent:=Self.MainPanelSourceEditor;
//在此处设置WelcomeMemo的任何其他属性。
终止
除此之外,这避免了将备忘录的所有者设置为特定的TfrmWelcome实例frmWelcome
,这是一个等待发生的意外,因为它可能不是您实际想要使用的实例
但是像@J。。说,如果你像听起来那样胡乱地使用试错法,你真的需要看看初学者教程。“我真的不知道这行代码是干什么的,我只是把它放在那里看看它是否能工作”,这可能是个问题。这段代码完全是胡说八道。这一切都毫无意义。把它扔掉,从一些教程开始。@Jerryd道奇:确实如此,但我个人认为这些SA学生从Delphi(我想是D7)开始应该受到鼓励。所以,在让他们去寻找教程之前,我试着给他们一些有用的东西。@martyna应该鼓励他们提出对其他人有用的好问题。应该鼓励他们这样发帖。投反对票是正确的反应。我的意思是,我可以看到对这个问题投赞成票。那有什么用?这怎么解释呢,非常感谢你们@我会感谢杰瑞道奇的you@MissMassey嗯,不客气吗?@MissMassey:顺便说一句,如果这个答案对你有帮助,请点击左上角的勾号图标,接受它。是的,是的@马蒂娜
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;