是這樣的,我界面上有很多Edit組件,每個Edit組件都有Exit事件;我想在主界面當中執行其他操作(如選擇選單)的時候,會執行當前編輯Edit的Exit事件,如果一個一個的去呼叫Exit事件就會很麻煩,我想獲得當前的Edit
TEdit *PEdit;
PEdit=dynamic_cast<TEdit *>(VP350Form->ActiveControl);
if(PEdit!=NULL)
{
PEdit->OnExit;
}
這樣還是執行不到我相應的Edit組件的Exit事件。請教下怎么改正。
uj5u.com熱心網友回復:
執行其他操作的時(如選擇選單),當前活動的控制元件就不是某個TEdit了,此時的VP350Form->ActiveControl是選單而不是TEdit的
uj5u.com熱心網友回復:
>>>每個Edit組件都有Exit事件這個優化的空間實在太大了。
接管Screen的OnActiveControlChange事件,你將有驚喜。
uj5u.com熱心網友回復:
是這樣的,我獲取到當前的Edit的時候,就想呼叫其Exit事件。uj5u.com熱心網友回復:
妖哥 怎么實作?沒懂uj5u.com熱心網友回復:
OnActiveControlChange 這個事件嗎?uj5u.com熱心網友回復:
//---------------------------------------------------------------------------
#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;
}
uj5u.com熱心網友回復:
if(pEdt != NULL && pEdt->Tag)&& pEdt->Tag 是多余的,忘了刪去
uj5u.com熱心網友回復:
樓主要學會自我學習啊,不要做永遠的伸手黨,就拿 OnActiveControlChange 如何使用這個問題來說,Google一下,代碼太多了。google "site:csdn.net ccrun Screen OnActiveControlChange"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137581.html
標籤:基礎類
上一篇:C++學習ing遇到的問題
