全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:847
推到 Plurk!
推到 Facebook!

將form傳入副程式及function中

尚未結案
uhlin
一般會員


發表:8
回覆:6
積分:2
註冊:2003-07-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-03 23:04:59 IP:211.74.xxx.xxx 未訂閱
我有兩個form 內容大致一樣 我想用一個副程式或function來做顯示的工作 例: form1->Label1="11111" form2->Label1="11111" TEST(form1)l void TEST(formMaon) { formMaon->Label1="11111" } 請問有辦法這樣做嗎?? 無
------
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-04 01:26:55 IP:211.22.xxx.xxx 未訂閱
隨手寫來,沒有測試過!提供一個參考! < class="code"> void TEST(TObject &aForm,AnsiString aName,AnsiString Title) { int i; for ( i = 0 ; i < TForm(aForm)->ControlCount ; i ) { if TForm(aFrom)->Controls[i]->Name == aName ) TForm(aForm)->Controls[i]->Caption = Title; // 這邊是Caption還是lable要自行再加強判斷 } } ------------------- 學然後知不足. 發表人 - stallion 於 2005/07/04 01:27:48 發表人 - stallion 於 2005/07/04 01:34:05
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-04 02:31:25 IP:221.169.xxx.xxx 未訂閱
uhlin:Form是可以傳遞的!
例:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  LoadINIForm(this); // 將此Form1傳出
}    void LoadINIForm(TForm *WForm)
{
  if (WForm == NULL) return ;
  PPropInfo PropInfo;
  PTypeInfo ptrTypeInfo;
  TComponent *pComponent;
  AnsiString S;
  for (int i=0;iComponentCount ;i  ) {
    // 我可以對此傳入的Form的元件處理!如
    pComponent=WForm->Components[i];
    PropInfo = GetPropInfo((TTypeInfo *)pComponent->ClassInfo(), "Caption"); // 是否存在Caption
    if (PropInfo ) { // 存在
      ptrTypeInfo=(PTypeInfo ) pComponent->ClassInfo();
      S=(AnsiString)ptrTypeInfo->Name; // 傳回元件類型名稱
      if (S=="TLabel") {// TLabel類
        if (((TLabel*)pComponent)->Name == "Label1") {
          ((TLabel*)pComponent)->Caption = "11111";
          ((TLabel*)pComponent)->Hint = "11111";
        }
      }
      ....      }
}    void __fastcall TForm1::N8Click(TObject *Sender)
{
  if ( ! OpenForm(TelPay) )  { // 檢查Form是否開啟
    TelPay=new TTelPay(Application);
  }
}    // 下面還可以檢查你的Form是否開啟過
bool OpenForm(TForm *WForm)
{
    int i;
    bool FormExist;
    if (WForm == NULL) return false;
    FormExist=false;
    for(i=0;iFormCount;i  )  {
        if(Screen->Forms[i]->ClassType()==WForm->ClassType())  {
            FormExist=true;
            break;
        }
    }
    if (FormExist == false) return false;
    if (WForm->WindowState == wsMinimized)
        ShowWindow(WForm->Handle,SW_SHOWNORMAL);
    else
        ShowWindow(WForm->Handle,SW_SHOWNA);
    if (!WForm->Visible) WForm->Visible=true;
    WForm->BringToFront();
    WForm->SetFocus();
    return true;
}
請參考!
Andy Chang 發表人 - andychang1690 於 2005/07/04 02:39:15
------
Andy Chang
系統時間:2024-05-16 12:48:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!