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

QuickRep Form反覆開啟問題?

尚未結案
myboss
一般會員


發表:25
回覆:42
積分:13
註冊:2004-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-06 13:34:12 IP:218.163.xxx.xxx 未訂閱
請問大家: 我有一QuickRep Form,於程式中開啟2次以上, 就會變成反白,程式因此當住,請問是怎麼回事? 發表人 - taishyang 於 2004/07/06 13:59:37
myboss
一般會員


發表:25
回覆:42
積分:13
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-06 21:29:27 IP:218.163.xxx.xxx 未訂閱
我在開啟FORM前有照書抄了一段程式 防止Form重複開啟,經trace程式碼發現 QuickRep Form關閉後FormExist = true; 而一般Form關閉後FormExist = false;    bool Tdm::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 FormExist; if(WForm->WindowState==wsMinimized) ShowWindow(WForm->Handle,SW_SHOWNORMAL); else ShowWindow(WForm->Handle,SW_SHOWNA); WForm->BringToFront(); WForm->SetFocus(); return true; } 我QuickRep Form開啟方式 if(dm->OpenForm(qpBuStockup)==false) { try { qpBuStockup =new TqpBuStockup(Application); qpBuStockup->QuickRep1->PreviewModal(); } catch(Exception &E) { delete qpBuStockup; Application->ShowException(&E); } 一般FORM開啟方式 if(dm->OpenForm(fmMater)==false) { try { fmMater =new TfmMater(Application); fmMater->Show(); } catch(Exception &E) { delete fmMater; Application->ShowException(&E); } 兩個FORM在FormClose時都有設Action = caFree; void __fastcall TqpBuStockup::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree; } 請問我有哪裡漏了嗎?該要如何解決呢?
myboss
一般會員


發表:25
回覆:42
積分:13
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-06 23:03:15 IP:218.163.xxx.xxx 未訂閱
上網站查詢PreviewModal,然後將程式改為Preview 但是第二次列印就指出現一空白Form,真不知是怎麼 回事,請問該如何解決?
myboss
一般會員


發表:25
回覆:42
積分:13
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-07 11:19:17 IP:218.163.xxx.xxx 未訂閱
因為問題未解決,所以在qpBuStockup->QuickRep1->Preview(); 之前加了qpBuStockup->QuickRep1->Prepare();結果發現 1 3 5 7 9可以顯現,2 4 6 8則是空白表單 ,請問這又是怎麼回事? [/quote]
andychang1690
資深會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-08 08:45:37 IP:219.130.xxx.xxx 未訂閱
你好:
我使用QuickRep的方式請參考
TPrint3 *Print3;
try {
  Print3=new TPrint3(Application);
  try  {
    Print3->QuickRep1->Print();  // or ->Preview();
    Print3->QuickRep1->Free();
    delete Print3;
  }
  catch(...)  {
    delete Print3;
    Application->MessageBox( "無法印出,請檢查印表機" , "列印錯誤" ,MB_OK);
  }
}  
catch (...) {
  delete Print3;
}
Andy Chang
------
Andy Chang
myboss
一般會員


發表:25
回覆:42
積分:13
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-09 09:22:20 IP:218.163.xxx.xxx 未訂閱
多謝andychang1690兄的指教: 我在參考了您的用法後,加上自己原始碼 將程式改成這樣,問題因而解決。 推測是QuickRep Form關閉時delete不乾淨之故。 在此謝謝Andy Chang的協助!            try         {                 qpBuStockup =new TqpBuStockup(Application);                 qpBuStockup->QuickRep1->Prepare();                qpBuStockup->QuickRep1->Preview();                 delete qpBuStockup; } catch(Exception &E) { delete qpBuStockup; Application->ShowException(&E); } 發表人 - myboss 於 2004/07/09 09:30:17
系統時間:2024-05-15 6:55:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!