【发布时间】:2018-08-20 08:04:54
【问题描述】:
我有一个带有 TEdit 组件的 TFrame。框架在运行时作为 TPageControl 的 TTabsheet 动态创建。我需要在 TEdits KeyPress 方法上将 TTabSheet.Caption 设置为 TEdit.Text,但是,如何获取 Frame 的所有者以便设置 Caption?
procedure TKeywordFrame.KeywordNameEditKeyPress( Sender : TObject; var Key : Char );
var
AOwner : TComponent;
begin
if( ord( Key ) = VK_RETURN ) then
begin
AOwner := ?
FKeywordListName := KeywordNameEdit.Text;
with AOwner do
begin
Caption := KeywordNameEdit.Text;
end;
end;
end;
我试过了
AOwner := TKeywordFrame.Owner;
DPS.KeywordFrame.pas(272):此处无法访问 E2233 属性“所有者”
AOwner := TKeywordFrame.GetOwner();
DPS.KeywordFrame.pas(272): E2076 这种形式的方法调用只允许类方法或构造函数
也许我在错误的大海捞针中翻找。
【问题讨论】:
-
我不认为 Owner 是这里的正确选择。迭代 Parent 直到到达 TabSheet。
-
请注意,您尝试访问 Owner/GetOwner 就像它是一个类方法一样。请改用 Self.Owner/Self.Parent(或简称 Owner/Parent)。
-
您将什么作为所有者参数传递给 TKeywordFrame.Create ?如果是标签页,请使用@RM 的答案。否则,用 Uwe Raabe 的回答。不要忘记您必须将 AOwner 类型转换为 TTabSheet,这样您才能访问 Caption 属性。
标签: delphi