線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:818
推到 Plurk!
推到 Facebook!

多個表單共用 Function 的問題

尚未結案
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-14 14:08:26 IP:61.221.xxx.xxx 未訂閱
大家好:   我的程式有很多表單,而表單中要去控制每個 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;
      }
    }
}
 
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-15 10:40:07 IP:61.63.xxx.xxx 未訂閱
引言: 大家好: 我的程式有很多表單,而表單中要去控制每個 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
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-15 12:01:04 IP:61.221.xxx.xxx 未訂閱
謝謝kwu,經過您指導後,問題己經解決了...
系統時間:2024-05-18 20:27:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!