从函数修改TEdit对象属性

时间:2018-01-08 19:01:28

标签: function c++builder vcl

我有一个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 个答案:

答案 0 :(得分:1)

TTabbedForm不是Edit1类的成员,因此它无法直接访问MyFunction对象。你必须要么:

  1. make Edit1使用Form的全局指针到达.hpp对象(指针在Form的void __fastcall MyFunction(int myNum ) { ShowMessage(myNum); TabbedForm->Edit1->Text = "Howdy"; } 文件中声明),前提是Form对象是自动创建的在运行时,或者至少在手动实例化Form对象时分配给全局指针:

    Button1Click()
  2. Edit1对象指针传递给MyFunction()

    void __fastcall MyFunction(int myNum, TEdit *TheEdit)
    {
        ShowMessage(myNum);
        TheEdit->Text = "Howdy";
    }
    
    void __fastcall TTabbedForm::Button1Click(TObject *Sender)
    {
        MyFunction(55, Edit1);
    }
    
  3. make MyFunction()是Form类的成员,然后它可以直接访问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";
    }