代码之家  ›  专栏  ›  技术社区  ›  relayman357

从函数修改TEdit对象属性

  •  0
  • relayman357  · 技术社区  · 7 年前

    我有一个C++Builder项目(VCL),表单上有一个TEdit按钮(Edit1)。我希望能够在我正在构建的函数中设置TEdit按钮的文本属性。如何从函数中执行此操作?

    void __fastcall MyFunction(int myNum )
    {
      ShowMessage(String(myNum));
      //Edit1->Text = "Howdy";    // this is the line of code that won't work
      return;
    }
    

    下面是我表单上调用上述函数的按钮。

    void __fastcall TTabbedForm::Button1Click(TObject *Sender)
    {
       MyFunction(55); // just throw integer 55 for a test
    }
    

    非常感谢。 俄罗斯

    1 回复  |  直到 7 年前
        1
  •  1
  •   Remy Lebeau    7 年前

    MyFunction 不是 TTabbedForm 类,因此它不能直接访问 Edit1 对象您必须:

    1. 制作 MyFunction公司 使用窗体的全局指针访问 编辑1 对象(指针在窗体的 .hpp 如果窗体对象在运行时自动创建,或者如果手动实例化窗体对象,则至少将其分配给全局指针:

      void __fastcall MyFunction(int myNum )
      {
          ShowMessage(myNum);
          TabbedForm->Edit1->Text = "Howdy";
      }
      
    2. 制作 Button1Click() 通过 编辑1 指向的对象指针 MyFunction() :

      void __fastcall MyFunction(int myNum, TEdit *TheEdit)
      {
          ShowMessage(myNum);
          TheEdit->Text = "Howdy";
      }
      
      void __fastcall TTabbedForm::Button1Click(TObject *Sender)
      {
          MyFunction(55, Edit1);
      }
      
    3. 制作 MyFunction() 是Form类的成员,则它可以直接访问 编辑1 对象(通过隐式 this 指针):

      class TTabbedForm : public TForm
      {
      private:
          ... 
          void __fastcall MyFunction(int myNum); // <-- add this
          ...
      };
      

      void __fastcall TTabbedForm::MyFunction(int myNum )
      {
          ShowMessage(myNum);
          /*this->*/Edit1->Text = "Howdy";
      }