请教个组件问题

Kanson 2013-07-18 04:27:50
是这样的,我界面上有很多Edit组件,每个Edit组件都有Exit事件;我想在主界面当中执行其他操作(如选择菜单)的时候,会执行当前编辑Edit的Exit事件,如果一个一个的去调用Exit事件就会很麻烦,我想获得当前的Edit

TEdit *PEdit;
PEdit=dynamic_cast<TEdit *>(VP350Form->ActiveControl);
if(PEdit!=NULL)
{
PEdit->OnExit;
}


这样还是执行不到我相应的Edit组件的Exit事件。请教下怎么改正。
...全文
161 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2013-07-19
  • 打赏
  • 举报
回复
楼主要学会自我学习啊,不要做永远的伸手党,就拿 OnActiveControlChange 如何使用这个问题来说,Google一下,代码太多了。 google "site:csdn.net ccrun Screen OnActiveControlChange"
sololie 2013-07-18
  • 打赏
  • 举报
回复
if(pEdt != NULL && pEdt->Tag) && pEdt->Tag 是多余的,忘了删去
sololie 2013-07-18
  • 打赏
  • 举报
回复


//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
    TEdit *edt1;
    TEdit *edt2;
    void __fastcall FormDestroy(TObject *Sender);
    void __fastcall edt1Exit(TObject *Sender);
    void __fastcall edt2Exit(TObject *Sender);
private:	// User declarations
    TNotifyEvent Org_OnActiveControlChange;
public:		// User declarations
    __fastcall TForm1(TComponent* Owner);
    void __fastcall MyCB_OnActiveControlChange(TObject* Sender);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Screen->OnActiveControlChange = MyCB_OnActiveControlChange;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyCB_OnActiveControlChange(TObject* Sender)
{
    TEdit* pEdt;
    pEdt = dynamic_cast<TEdit*>(Sender);
    if(pEdt != NULL && pEdt->Tag)
    {
        pEdt->OnExit;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::edt1Exit(TObject *Sender)
{
    ShowMessage("控件 Name 是 " + ((TEdit*)Sender)->Name);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::edt2Exit(TObject *Sender)
{
    ShowMessage("控件 Text 是 " + ((TEdit*)Sender)->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    Screen->OnActiveControlChange = NULL;
}

Kanson 2013-07-18
  • 打赏
  • 举报
回复
引用 2 楼 ccrun 的回复:
>>>每个Edit组件都有Exit事件 这个优化的空间实在太大了。 接管Screen的OnActiveControlChange事件,你将有惊喜。
OnActiveControlChange 这个事件吗?
Kanson 2013-07-18
  • 打赏
  • 举报
回复
引用 2 楼 ccrun 的回复:
>>>每个Edit组件都有Exit事件 这个优化的空间实在太大了。 接管Screen的OnActiveControlChange事件,你将有惊喜。
妖哥 怎么实现?没懂
Kanson 2013-07-18
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
执行其他操作的时(如选择菜单),当前活动的控件就不是某个TEdit了, 此时的VP350Form->ActiveControl是菜单而不是TEdit的
是这样的,我获取到当前的Edit的时候,就想调用其Exit事件。
ccrun.com 2013-07-18
  • 打赏
  • 举报
回复
>>>每个Edit组件都有Exit事件 这个优化的空间实在太大了。 接管Screen的OnActiveControlChange事件,你将有惊喜。
sololie 2013-07-18
  • 打赏
  • 举报
回复
执行其他操作的时(如选择菜单),当前活动的控件就不是某个TEdit了, 此时的VP350Form->ActiveControl是菜单而不是TEdit的

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧