我有一个带有TEdit组件的TFrame。这些帧是在运行时动态创建的,作为TPageControl的TTabsheet。我需要在TEdits KeyPress方法上将TTabSheet.Caption设置为TEdit.Text,但是,如何获得框架的所有者才能设置标题?
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):此处无法访问所有者属性“Owner”
AOwner := TKeywordFrame.GetOwner();DPS.KeywordFrame.pas(272):E2076这种形式的方法调用只允许用于类方法或构造函数
也许我在大海捞针的时候找错了地方。
发布于 2018-08-21 13:57:15
Self.Parent是正确的方向。谢谢你,RM。
procedure TKeywordFrame.KeywordNameEditKeyPress( Sender : TObject; var Key : Char );
var
AOwner : TWinControl;
begin
if( ord( Key ) = VK_RETURN ) then
begin
AOwner := Self.Parent;
FKeywordListName := KeywordNameEdit.Text;
if( AOwner is TTabSheet ) then
begin
TTabSheet( AOwner ).Caption := FKeywordListName;
end;
end;
end;有趣的是,注意到Self.Parent指向TTabSheet,而不是人们可能认为的TFrame,因为这是控件所在的位置。
https://stackoverflow.com/questions/51926453
复制相似问题