MDI中子窗体和该窗体对应的QuickRep1.Preview同时出现的问题 |
答題得分者是:channel
|
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
我的主程序是MDI模式 打印一张表
var form:Tform1;//form1为quickrpt所在子窗体 begin form:=Tform1.Create(application);//若去掉此句 则提示 path to source file: QuickRpt.pas的问题 所以这里没有去掉 但不去掉又出现后面的问题 form.QuickRep1.Preview; end; 如此 不仅QuickRep1.Preview会出现 子窗体form1也会出现在主程序界面中 这里如何只出现QuickRep1.Preview 而不出现 子窗体form1 呢?其实 就只是想预览 但不用出现这个子窗体form1啊 我需要在MDI下实现QuickRep1.Preview 现在的问题是 QuickRep1.Preview和 form1同时出现了 谢谢大家 |
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
兩個方法可以解決:
1:將Form1的屬性WindowState設為wsMinimized 2:當您要新增一張報表程式時,不要先新增Form1然後在Form1放上QuickRep1 而是直接在Delphi Menu File -> new ->在new的頁次,選擇Report,這樣的話就是直接產生QuickRep(他是繼承TQuickRep) 這樣就不會有Form又有QuickRep的問題了… ~小弟淺見,參考看看~ ===================引 用 文 章=================== 我的主程序是MDI模式 打印一张表
var form:Tform1;//form1为quickrpt所在子窗体 begin form:=Tform1.Create(application);//若去掉此句 则提示 path to source file: QuickRpt.pas的问题 所以这里没有去掉 但不去掉又出现后面的问题 form.QuickRep1.Preview; end; 如此 不仅QuickRep1.Preview会出现 子窗体form1也会出现在主程序界面中 这里如何只出现QuickRep1.Preview 而不出现 子窗体form1 呢?其实 就只是想预览 但不用出现这个子窗体form1啊? 我需要在MDI下实现QuickRep1.Preview 现在的问题是 QuickRep1.Preview和 form1同时出现了 谢谢大家 ?
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
感谢channel的回复
方法一 MDI中子窗体和该窗体对应的QuickRep1.Preview仍然同时出现 只是Form1在MDI 的主窗体中最小化了而已 方法二 实施后 就不存在同时出现的问题了 但是 请看我的代码: 主窗体对应的 点击Click 代码 var form:Tform1;//form1为新的quickrpt begin form:=Tform1.Create(application); form.Preview; form.Free;//若不加上次此句 则再次点击实现预览时 提示 这个组件已经存在 所以我这里FREE了一下 end; 但是 又有了新的问题 主窗体对应的 点击 键依然可点 若在不关闭 新的quickrpt对应的print preview的情况下再次点击执行 Click 代码 则出现 没有加 form.Free 时的错误提示:这个组件已经存在 请问 在不关闭 print preview的情况下再次点击执行Click 代码 错误提示:这个组件已经存在 怎么解决? |
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
if form = nil then //或if not Assigned(form) then
begin form:=Tform1.Create(application); form.Preview; form.Free; end; ~小弟淺見,參考看看~ ===================引 用 文 章=================== 感谢channel的回复 方法一??MDI中子窗体和该窗体对应的QuickRep1.Preview仍然同时出现 ?只是Form1在MDI 的主窗体中最小化了而已 方法二 实施后 就不存在同时出现的问题了 但是 请看我的代码: 主窗体对应的 点击Click 代码 var form:Tform1;//form1为quickrpt所在子窗体 begin form:=Tform1.Create(application); form.Preview; form.Free;//若不加上次此句 则再次点击实现预览时 提示 这个组件已经存在 所以我这里FREE了一下 end; 但是 又有了新的问题 主窗体对应的 点击 键依然可点 若在不关闭 print preview的情况下再次点击执行 Click 代码 则出现 没有加 form.Free 时的错误提示:这个组件已经存在 请问 在不关闭 print preview的情况下再次点击执行Click 代码 错误提示:这个组件已经存在 怎么解决?
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
想請問一下您為什麼要重新宣告form:Tform1;//form1为新的quickrpt??
~敬請指教,感激不盡~ ===================引 用 文 章=================== ?非常感动channel此时还在线上 不论如何 先谢谢channel大大 主窗体对应的 点击Click 代码 var form:Tform1;//form1为新的quickrpt begin if form=nil then begin form:=Tform1.Create(application); form.Preview; form.Free; end; end; 这样了以后 点击Click 代码 无反应了....
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
假設您New Report的Name為Form1,Unit的名稱為fm1
您在MDI母窗体中的implementation底下uses fm1; 不用再宣告form:Tform1; //var //form:Tform1;//form1为新的quickrpt //以上這兩行不要 begin if form=nil then begin form:=Tform1.Create(application); form.Preview; form.Free; end; end; ~小弟淺見,參考看看~ ===================引 用 文 章=================== 小弟初次尝试? 这个宣告是从例子学习中 借鉴的 请问channel兄 如果不是这样 这里你会怎么处理? 还有 我仍然是把form1作为了MDI的一个子窗体 否则在MDI母窗体中 执行点击代码 没有效果
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
“假設您New Report的Name為Form1,Unit的名稱為fm1
您在MDI母窗体中的implementation底下uses fm1;”我确实是这样做的 不用再宣告form:Tform1; //var //form:Tform1;//form1为新的quickrpt //以上這兩行不要 begin if form=nil then//这里的form 是指??? begin form:=Tform1.Create(application); form.Preview; form.Free; end; end; |
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
這裏的form就是您uses unit 的Form Name啊…
就是您不是有New一個Report的Name… ~小弟淺見,參考看看~ ===================引 用 文 章=================== 不用再宣告form:Tform1; //var //form:Tform1;//form1为新的quickrpt //以上這兩行不要 begin ? if form=nil then//这里的form 是指??? ? begin ????form:=Tform1.Create(application); ??? form.Preview; ??? form.Free; ? end; end;
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
因为
//var //form:Tform1;//form1为新的quickrpt //以上這兩行不要 form1就是新的quickrpt的name 所以调整成如下 begin if form1=nil then begin form1:=Tform1.Create(application); form1.Preview; form1.Free; end; end;//执行成这样以后 执行Click 只有点击的第一次有效果 执行后 关闭print preview 再执行Click 时 就没有反应了.... |
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
剛寫了程式測試了一下…
您將form1.Free;這一行改為FreeAndNil(form1); 這樣就可以…您測試看看吧… ~小弟淺見,參考看看~ ===================引 用 文 章=================== 因为 //var //form:Tform1;//form1为新的quickrpt //以上這兩行不要 form1就是新的quickrpt的name 所以调整成如下 begin ? if form1=nil then ? begin ????form1:=Tform1.Create(application); ??? form1.Preview; ??? form1.Free; ? end; end;//执行成这样以后 执行Click 只有点击的第一次有效果 执行后 关闭print preview 再执行Click 时 就没有反应了....
------
~小弟淺見,參考看看~ |
baby2321
初階會員 ![]() ![]() 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |