【问题标题】:How to get to the elements on a page control?如何访问页面控件上的元素?
【发布时间】:2013-04-13 19:19:22
【问题描述】:

我正在使用 Delphi 7。

假设我的表单上有一个页面控件。此页面控件有两个或三个选项卡。每个选项卡上都有一些其他控件,例如标签、编辑等。例如,如何获取代码中编辑的文本属性?

【问题讨论】:

    标签: delphi delphi-7


    【解决方案1】:

    使用其ControlCountControls 属性遍历选项卡的控件。

    for i := 0 to TabSheet.ControlCount-1 do
    begin
      if TabSheet.Controls[i] is TEdit then
        ShowMessage(TEdit(TabSheet.Controls[i]).Text);
    end;
    

    这将遍历选项卡表的所有直接子级。如果您需要更深入地迭代孩子的孩子等等,那么您需要一个递归解决方案。

    如果你想在每个标签页中搜索,那么你也需要遍历它们。

    for i := 0 to PageControl.PageCount-1 do
      TabSheet := PageControl.Pages[i];
      for j := 0 to TabSheet.ControlCount-1 do
      begin
        if TabSheet.Controls[j] is TEdit then
          ShowMessage(TEdit(TabSheet.Controls[j]).Text);
      end;
    

    【讨论】:

    • 这是您所提问题的答案。您接受的另一个答案是另一个问题的答案。
    • 我不同意大卫,正如米哈伊尔指出的那样,他没有意识到他可以以通常的方式简单地访问他的 TEdit,你的回答非常好,但回答了另一个问题。 :)
    • @TobyAllen 不。我回答了被问到的问题,“如何访问页面控件上的元素?”你给出了实际问题的解决方案。你回答了应该问的问题。然而,这个问题永远不会被问到,因为解决方案是微不足道的。这个问题应该是,“如果我有一个编辑控件,Edit1,我该如何访问该控件的Text 属性?”
    【解决方案2】:

    您仍然可以直接访问 TEdit

    Edit1.Text := 'My Edit box on a Tab';
    

    【讨论】:

    • 感谢您的提醒。这很容易忘记。因为在 FoxPro 中,据我所知,为了访问其他控件中的控件,您必须从父控件开始。然而,在 Delphi 中,情况并非如此。
    • 从技术上讲,这在 Delphi 中也是正确的,但是您使用的是所有者而不是父级。 TEdit 的所有者是它所在的 TForm。您可以将其称为 Form1.Edit1 但由于您已经在 Form1 中编写代码,因此您不需要此前缀。
    猜你喜欢
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多