首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让标题所有者设置TTabsheet标题

让标题所有者设置TTabsheet标题
EN

Stack Overflow用户
提问于 2018-08-20 16:04:55
回答 1查看 79关注 0票数 0

我有一个带有TEdit组件的TFrame。这些帧是在运行时动态创建的,作为TPageControl的TTabsheet。我需要在TEdits KeyPress方法上将TTabSheet.Caption设置为TEdit.Text,但是,如何获得框架的所有者才能设置标题?

代码语言:javascript
复制
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;

我试过了

代码语言:javascript
复制
AOwner := TKeywordFrame.Owner;

DPS.KeywordFrame.pas(272):此处无法访问所有者属性“Owner”

代码语言:javascript
复制
AOwner := TKeywordFrame.GetOwner();

DPS.KeywordFrame.pas(272):E2076这种形式的方法调用只允许用于类方法或构造函数

也许我在大海捞针的时候找错了地方。

EN

回答 1

Stack Overflow用户

发布于 2018-08-21 13:57:15

Self.Parent是正确的方向。谢谢你,RM。

代码语言:javascript
复制
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,因为这是控件所在的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51926453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档