从函数修改 TEdit 对象属性

modify TEdit object properties from function

我有一个 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
}

谢谢, 拉斯

MyFunction 不是 TTabbedForm class 的成员,因此它不能直接访问 Edit1 对象。您将必须:

  1. 使MyFunction使用Fo​​rm的全局指针到达Edit1对象(指针在Form的.hpp文件中声明),提供Form对象在运行时自动创建,或者如果您手动实例化 Form 对象,至少分配给全局指针:

    void __fastcall MyFunction(int myNum )
    {
        ShowMessage(myNum);
        TabbedForm->Edit1->Text = "Howdy";
    }
    
  2. 使Button1Click()Edit1对象指针传递给MyFunction():

    void __fastcall MyFunction(int myNum, TEdit *TheEdit)
    {
        ShowMessage(myNum);
        TheEdit->Text = "Howdy";
    }
    
    void __fastcall TTabbedForm::Button1Click(TObject *Sender)
    {
        MyFunction(55, Edit1);
    }
    
  3. 使 MyFunction() 成为表单 class 的成员,然后它可以直接访问 Edit1 对象(通过隐式 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";
    }