C++ 如何在c+;中通过单个函数更改10个编辑控件的颜色+;建设者

C++ 如何在c+;中通过单个函数更改10个编辑控件的颜色+;建设者,c++,delphi,api,c++builder,C++,Delphi,Api,C++builder,我想在进入编辑和退出编辑时更改编辑控件的颜色,我想通过单个函数完成此操作我不想在enter事件或on exit事件中为每个编辑添加代码编写OneNet和OnExit事件处理程序并将它们分配给每个控件。使用事件的Sender参数来标识事件应用于哪个控件。是的,就像David和kobik说的那样,您只需要为OneNet和OnExit创建事件处理程序,并分配希望使用的控件 比如说 在表单中添加两个TEdit,并在表单的构造函数中执行以下操作 __fastcall TTestForm::TTestFor

我想在进入编辑和退出编辑时更改编辑控件的颜色,我想通过单个函数完成此操作我不想在enter事件或on exit事件中为每个编辑添加代码编写OneNet和OnExit事件处理程序并将它们分配给每个控件。使用事件的Sender参数来标识事件应用于哪个控件。

是的,就像David和kobik说的那样,您只需要为OneNet和OnExit创建事件处理程序,并分配希望使用的控件

比如说

在表单中添加两个TEdit,并在表单的构造函数中执行以下操作

__fastcall TTestForm::TTestForm(TComponent* Owner)
    : TForm(Owner)
{
    Edit1->OnEnter = EditEnter;
    Edit2->OnEnter = EditEnter;

    Edit1->OnExit = EditExit;
    Edit2->OnExit = EditExit;
}
现在创建Enter和Exit事件处理程序,如下所示

void __fastcall TTestForm::EditEnter(TObject *Sender)
{
    TEdit *Temp = (TEdit*)Sender;
    Temp->Color = clRed;
}

void __fastcall TTestForm::EditExit(TObject *Sender)
{
    TEdit *Temp = (TEdit*)Sender;
    Temp->Color = clGreen;
}

就是这样。

您可以将编辑控制过程划分为子类并在那里执行。假设你使用Windows API,因为它不是真的。你也可以对编辑VCL组件类进行分类。<代码> StWistWORLINGPOTR > <代码> GWLPYWNPROC 。IAM是新的C++。我想这个想法的代码实际上很容易。为您需要的所有编辑控件设置相同的<代码> OnEnter <代码> >代码> OnEnguts事件处理程序。您可以考虑使用<代码> DyrimCysCase<代码>,而不是常规的C样式CAST。这将添加一些运行时类型检查,通常更像VCL:)如果您知道发送方始终是
TEdit*
,那么最好使用
static\u cast
,因为
dynamic\u cast
static\u cast
没有的运行时开销。此外,为了增加Shaun的答案,您可以在设计时而不是在运行时在代码中分配事件处理程序。
OnEnter
OnExit
事件被声明为
\u published
,因此可以在IDE的对象检查器中访问。