请教个组件问题

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事件。请教下怎么改正。
...全文
128 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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的
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2013-07-18 04:27
社区公告
暂无公告