MDI環璄下QuickRep的問題 |
尚未結案
|
j027
一般會員 發表:2 回覆:5 積分:1 註冊:2003-02-27 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
j027
一般會員 發表:2 回覆:5 積分:1 註冊:2003-02-27 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
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 發送簡訊給我 |
以下這段是我在控制子表單永遠維持一個的程式:
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 發送簡訊給我 |
New 一個MDI Application後,你可以看到ToolBar裡面最左邊有一個白色的ToolButton9,你按下去就是FileNew1Execute,我上面寫的程式就是利用那各ToolButton9來執行報表的預覽動作阿...TRY TRY SEE..
引言: 以下這段是我在控制子表單永遠維持一個的程式: . . . 除了第一行procedure TMainForm.FileNew1Execute(Sender: TObject); 我看不太懂它的意思(尤其是FileNew1Execute)之外,其它的都不難理解。 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
j027
一般會員 發表:2 回覆:5 積分:1 註冊:2003-02-27 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |