kwu
中階會員
發表:10 回覆:57 積分:58 註冊:2003-10-31
發送簡訊給我
|
引言:
大家好:
我的程式有很多表單,而表單中要去控制每個 TDBEdit OnEnter時的顏色,
所以我寫了一個 TurnColor 的 Function,並把所有的 DBEdit OnEnter 指定
到這個 Function,如果只有單一個表單,這樣是沒有問題的,(範例 "1form")下傳:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46483
但是如果要多個表單都去共用這個Function,mfunc.c 的宣告TForm1就有問題了(範例 "2form")
,請問有辦法解決嗎?
#include "mfunc.c"
__published: // IDE-managed Components
void __fastcall TurnColor(TObject *Sender);
mfunc.c 內容如下:
void __fastcall TForm1::TurnColor(TObject *Sender)
{
for(int i=0; i ComponentCount; i )
if(Components[i]->ClassNameIs("TDBEdit"))
{
TDBEdit *tmpdbe = (TDBEdit *)Components[i];
if(tmpdbe->Name.SubString(1,3) == "DBE")
{
if(tmpdbe->Name == ((TDBEdit *)Sender)->Name)
{
tmpdbe->Color = clBlue;
}
else
tmpdbe->Color = clSkyBlue;
}
}
}
shinnuei你好: 試了一下你程式,改成下列方式應可以解決你的問題
請將 mfunc.c 改成 mfunc.cpp
請將 mfunc.cpp 加入到你的 Project
< >請參考紅色修改的部份< > 以下是 mfunc.h 的內容 #ifndef mfuncH
#define mfuncH #include
#include //--------------------------------------------------------------------------- void __fastcall TurnColor(TForm *frm,TObject *Sender); #endif 以下是 mfunc.cpp 的內容 #pragma hdrstop #include "mfunc.h" //--------------------------------------------------------------------------- #pragma package(smart_init) void __fastcall TurnColor(TForm *frm,TObject *Sender)
{
for(int i=0; i ComponentCount; i )
if(frm->Components[i]->ClassNameIs("TDBEdit"))
{
TDBEdit *tmpdbe = (TDBEdit *)frm->Components[i];
if(tmpdbe->Name.SubString(1,3) == "DBE")
{
if(tmpdbe->Name == ((TDBEdit *)Sender)->Name)
{
tmpdbe->Color = clBlue;
}
else
tmpdbe->Color = clSkyBlue;
}
}
} 以下是 Unit1.h 的內容 #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TDBEdit *DBEdit1;
TDBEdit *DBEdit2;
TDBEdit *DBEdit3;
TDBEdit *DBEdit4;
TDBEdit *DBEdit5;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall DBEdit1Enter(TObject *Sender);
void __fastcall DBEdit2Enter(TObject *Sender);
void __fastcall DBEdit3Enter(TObject *Sender);
void __fastcall DBEdit4Enter(TObject *Sender);
void __fastcall DBEdit5Enter(TObject *Sender);
//void __fastcall TurnColor(TObject *Sender); <--此行拿掉
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif 以下是 Unit1.cpp 的內容 #include
#pragma hdrstop #include "Unit1.h"
#include "Unit2.h"
#include "mfunc.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show();
}
//--------------------------------------------------------------------------- void __fastcall TForm1::DBEdit1Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm1::DBEdit2Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm1::DBEdit3Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm1::DBEdit4Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm1::DBEdit5Enter(TObject *Sender)
{
TurnColor(this,Sender);
} 以下是 Unit2.h 的內容 #ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
#include
#include
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TDBEdit *DBEdit1;
TDBEdit *DBEdit2;
TDBEdit *DBEdit3;
TDBEdit *DBEdit4;
TDBEdit *DBEdit5;
void __fastcall DBEdit1Enter(TObject *Sender);
void __fastcall DBEdit2Enter(TObject *Sender);
void __fastcall DBEdit3Enter(TObject *Sender);
void __fastcall DBEdit4Enter(TObject *Sender);
void __fastcall DBEdit5Enter(TObject *Sender);
//void __fastcall TurnColor(TObject *Sender); <--此行拿掉
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif 以下是 Unit2.cpp 的內容 #include
#pragma hdrstop #include "Unit2.h"
#include "mfunc.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm2::DBEdit1Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::DBEdit2Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::DBEdit3Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::DBEdit4Enter(TObject *Sender)
{
TurnColor(this,Sender);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::DBEdit5Enter(TObject *Sender)
{
TurnColor(this,Sender);
} 發表人 - kwu 於 2004/03/15 10:46:56
|