QuickRep1做報表問題(20分)

  • 主题发起人 主题发起人 weifang
  • 开始时间 开始时间
W

weifang

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi自帶的QuickRep1做報表,怎樣做才能使用戶只能預覽,而不能打印?
 
这个很是简单!
用delphi打开Lib目录下的Qrprev.dfm文件,改下面的地方就OK了.
object Print: TToolButton
Left = 208
Top = 0
Hint = 'Print'
Caption = 'Print'
Enabled = False
ImageIndex = 8
//把下面的这句注释掉就行了!
// OnClick = PrintClick
end
{说明用这个方法可以把预览介面改为中文的.改Hint和Caption属性就行了,其它的不管它.保存之后就可以了.以后你所有用QReport的报表都会是中文的,当然已前编好的再编译一次就Ok了.记注要先复制一份出来留着备用!delphi6+win2000pro通过!}
 
[:(]来迟了
对了,如果你只是在这个一程序里要求是这样的说,那么你就将Qrprev.dfm复制到你的这个程序目录下就行了。其它报表就不会受任何映响了。
 
TO:MYLZX,SYDAN
我是要求在在某些條件下,只能預覽;
某些條件下,能打印!
如果在Lib目?下改Qrprev.dfm文件,不是變成了所有報表都只能預覽而不能打印?
SYDAN你說的我不太清楚!請詳細說明!
 
TO:MYLZX,SYDAN
// OnClick = PrintClick 这句注释掉有問題!
編譯時提示錯誤:identifier expected on line 147
是什麼問題呢?

 
自己写一个预览的FORM代替它固定的预览的FORM,这样你就可以随时控制打印了
 
TO:JARVIS100
具體怎樣寫呢?
 
定義一個過程
proceduredo
FormChanged (Sender : Tobject);
begin
if Assigned(Screen.OnActiveFormChange) then
Screen.OnActiveFormChange:=nil;
if Screen.ActiveForm is TQRStandardPreview then
begin
with TQRStandardPreview(Screen.ActiveForm)do
begin
PrintSetup.Visible := False;//打印設置
Print.Visible := False;//打印按鈕
end;
end;
end;

在調用的時候
Screen.OnActiveFormChange:=DoFormChanged;
QR.PreView;
 
to:stuwe
下面的在那裡調用呀?
Screen.OnActiveFormChange:=DoFormChanged;
QR.PreView;

 
to:stuwe
定義的過程通不過,你調試通過了麼?
 
变成下面的就行了,删除了就OK了,还有把Lib目录下的QRPrev.dcu给删除才行,有dcu文件它不理Qrprev.dfm文件的.如果不行就是你的计算机或代码有问题!我试过了就是刚刚.
object Print: TToolButton
Left = 208
Top = 0
Hint = 'Print'
Caption = 'Print'
Enabled = False
ImageIndex = 8
end
 
User QRPrev;//加入TQRStandardPreview所在的unit

Screen.OnActiveFormChange:=DoFormChanged;
QR.PreView;//預覽報表 QR是你要預覽的報表Name
 
to:stuwe
還是不行! 發一個例子給我好嗎?fangwei868@hotmail.com
 
不行?是錯誤還是什麼呢?
如果是錯誤又是什麼錯誤你應該說出來才行嗎?
上面都有說在user裡面多加一個QRPrev,你做了沒有?
還有一點,你定義過程是怎麼定義的?
 
to:stuwe
提示TQRStandardPreview無定義!TQRStandardPreview在那裡呢?
我是用delphi自帶的QuickRep1做報表的!
 
to:stuwe
已經編譯通過! 但是在那裡調用呢?
 
to:stuwe
我做如下調用:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Screen.OnActiveFormChange:=DoFormChanged;
form2.QuickRep1.Preview;
end;

編譯提示錯誤:incompatible types: 'method pointer and regular procedue
是什麼問題呢?怎麼處理?
 
這個過程你是如何定義的呢?
proceduredo
FormChanged(Sender: TObject);//在MainForm的private或public裡面聲明
procedure TMainForm.DoFormChanged (Sender : Tobject);//MainForm是窗口Name
begin
if Assigned(Screen.OnActiveFormChange) then
Screen.OnActiveFormChange:=nil;
if Screen.ActiveForm is TQRStandardPreview then
begin
with TQRStandardPreview(Screen.ActiveForm)do
begin
PrintSetup.Visible := False;//打印設置
Print.Visible := False;//打印按鈕
end;
end;
end;
 
把过程DoFormChanged就放在当前FORM中。就OK。
 
to:stuwe
可以啦!只是預覽後窗口不是最大化!能使最大化嗎?
 
后退
顶部