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

MDI環璄下QuickRep的問題

尚未結案
j027
一般會員


發表:2
回覆:5
積分:1
註冊:2003-02-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-19 20:35:45 IP:61.227.xxx.xxx 未訂閱
若是我不使用MDI的架構下,寫成 begin application.CreateForm(Tmember_rep,member_rep); member_rep.member_qr.Preview; end; 它可以順利叫出member_qr這個報表,但改成MDI架構之後, 我點選MainForm的MenuItem,寫成像上面所述的那樣之後, 變成報表與預覽兩個分開了,可以了解我的意思嗎? P.S.之前是用win98,現在是用win2000,不知道有沒關係?
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-19 21:06:03 IP:218.16.xxx.xxx 未訂閱
在 MDI 環境下以往用 Application 來 Create 的 Form 最收轉做 Main Form 來 Create :
begin
  member_rep := Tmember_rep.Create(self);
  member_rep.member_qr.Preview;
end;
先試試罷。
j027
一般會員


發表:2
回覆:5
積分:1
註冊:2003-02-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-20 02:10:16 IP:218.173.xxx.xxx 未訂閱
你好,我試了 begin member_rep := Tmember_rep.Create(self); member_rep.member_qr.Preview; end; 但它的結果仍是一樣,member_qr的form(member_rep)還是和Preview的畫面分開耶!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-20 08:18:02 IP:218.16.xxx.xxx 未訂閱
你真的完全沒改動過 member_rep 嗎,似乎你在 member_rep 裡有 show 的動作把自己 show 出來哩.... 另一個可能就是在你的其他程式碼中,有將 Active Form show 出來的統一做法等等... 可以將你的member_rep form 的程式碼 貼上 或上傳到求助區嗎?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-20 08:33:45 IP:211.74.xxx.xxx 未訂閱
hi..j027.. 這是我測試的Code,Run起來完全沒有問題,你可以比對看看
procedure TMainForm.FileNew1Execute(Sender: TObject);
var
  SQLSTR: string;
  Child: TMDIChild;
begin
  try
  Child := TMDIChild.Create(self);
    Child.QRTQuery.CLOSE;
    //這裡處理Report的DataSet的SQL語法
    SQLSTR := '';
    Child.QRTQuery.SQL.CLEAR;
    Child.QRTQuery.SQL.Add(SQLSTR);
    Child.QRTQuery.Open;
    Child.QRTQuery.First;
    if Child.QRTQuery.IsEmpty then
    begin
      MessageDlg('無資料', mtWarning, [mbok], 0);
      Child.QRTQuery.Close;
      Abort;
    end
    else
    begin
      Child.QuickRep1.Preview;
      Child.QuickRep1.QRPrinter.Free;
      Child.QuickRep1.QRPrinter := nil;
      Child.QRTQuery.Close;
    end;
  finally
    Child.Free;
  end;
end;
TRY TRY SEE
引言: 你好,我試了 begin member_rep := Tmember_rep.Create(self); member_rep.member_qr.Preview; end; 但它的結果仍是一樣,member_qr的form(member_rep)還是和Preview的畫面分開耶!
j027
一般會員


發表:2
回覆:5
積分:1
註冊:2003-02-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-21 09:00:18 IP:61.221.xxx.xxx 未訂閱
以下這段是我在控制子表單永遠維持一個的程式: procedure OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent); var i: integer; Child:TForm; begin for i := 0 to Screen.FormCount -1 do if Screen.Forms[i].ClassType=FormClass then begin Child:=Screen.Forms[i]; if Child.WindowState=wsMinimized then ShowWindow(Child.handle,SW_SHOWNORMAL) else ShowWindow(Child.handle,SW_SHOWNA); if (not Child.Visible) then Child.Visible:=True; Child.BringToFront; Child.Setfocus; TForm(fm):=Child; exit; end; Child:=TForm(FormClass.NewInstance); TForm(fm):=Child; Child.Create(AOwner); end; MainForm我當然是設它為fsMDIForm,而SubForm則設為fsMDIChild Auto-create forms也是只有放MainForm而己,其它的表單都放在Available forms,這樣沒錯吧! 以前是在window98下run,現在是在window2000下run,不知道有沒有關係? 另外我也沒有在 member_rep 裡有 show 的動作把自己 show 出來, 其他程式碼中,也沒有將 Active Form show 出來的統一做法。 只有用openForm(TAboutBox,AboutBox,self);這樣的方式來呼叫表單而己, (因為要配合procedure OpenForm那段程式) 請問是因為這個原因嗎? 另外,chin兄所提的, 除了第一行procedure TMainForm.FileNew1Execute(Sender: TObject); 我看不太懂它的意思(尤其是FileNew1Execute)之外,其它的都不難理解。
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-21 10:01:47 IP:211.74.xxx.xxx 未訂閱
New 一個MDI Application後,你可以看到ToolBar裡面最左邊有一個白色的ToolButton9,你按下去就是FileNew1Execute,我上面寫的程式就是利用那各ToolButton9來執行報表的預覽動作阿...TRY TRY SEE..
引言: 以下這段是我在控制子表單永遠維持一個的程式: . . . 除了第一行procedure TMainForm.FileNew1Execute(Sender: TObject); 我看不太懂它的意思(尤其是FileNew1Execute)之外,其它的都不難理解。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-21 14:21:49 IP:218.16.xxx.xxx 未訂閱
請問們的 Tmember_rep 也是用 OpenForm 來開的嗎? 還是像你之前說的獨主地 Create ? 若是 OpenForm 則 OpenForm 有 Show 它出來 若獨立我在已 post 的程式碼看不出為甚麼 可能在某不顯眼地方隱藏。我用 win2k 一般是不會 show 出來的。你最好做個簡單的試試是否一樣都會 show 出來。
j027
一般會員


發表:2
回覆:5
積分:1
註冊:2003-02-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-21 23:49:06 IP:61.227.xxx.xxx 未訂閱
to Justmade兄, 我試過openForm及你說的獨立create都是一樣的結果(預覽列印的畫面及報表表單的form是分開的),我若用.show的方式也是不會秀出表單來的。 to chih兄, 你的方式,是只能在一個MainForm下使用吧!我的想法很簡單,就是在MainForm包括了MenuItem,當我按下Item選項時它會呼叫一個報表的SubForm; 而你的寫法,我不可能把它寫在MainForm下吧!因為我已有了一個openForm的procedure了啊! 我想你的意思是指把這個寫法寫在一個放置報表的MainForm,當按下此報表MainForm上的toolBar其中一個button時,才會去呼叫報表的SubForm,是吧!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-22 07:57:58 IP:211.74.xxx.xxx 未訂閱
to j027: 1.其實我的寫法就是你要的了,依照我的寫法,你原先的OpenForm就可以不用了. 2.你把我那一段改為放在MenuItem.Click裡面,就是去呼叫一個報表的SubForm了, 只是在我的程式沒有去檢查該SubForm是否已經啟動了,這段你可能就自己加一下吧^^
引言: to chih兄, 你的方式,是只能在一個MainForm下使用吧!我的想法很簡單,就是在MainForm包括了MenuItem,當我按下Item選項時它會呼叫一個報表的SubForm; 而你的寫法,我不可能把它寫在MainForm下吧!因為我已有了一個openForm的procedure了啊! 我想你的意思是指把這個寫法寫在一個放置報表的MainForm,當按下此報表MainForm上的toolBar其中一個button時,才會去呼叫報表的SubForm,是吧!
j027
一般會員


發表:2
回覆:5
積分:1
註冊:2003-02-27

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-22 09:00:06 IP:61.221.xxx.xxx 未訂閱
謝謝chih及Justmade,我想這個問題就到這裡吧!
系統時間:2024-05-07 2:59:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!