前述有问题。
应在程序中放置一Timer,将该段程序放在Timer1Timer程序段中:
Report:TCustomQuickRep;
procedure TForm1.Button1Click(Sender:TObject);
begin
Timer1.Enabled:=True;
Report.Preview;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
prevFrm : TForm;
tBar, tBut, tPrev : TComponent;
j,k:Integer;
begin
if not assigned(Report.QRPrinter) then
exit;//需要在此判断窗口是否已分配
timer1.enabled := false;//关闭定时器
prevfrm := TForm(Report.QRPrinter.Client.Parent);//获取预览窗口
for j := 0 to prevfrm.ControlCount -1do
begin
tBar := prevfrm.controls[ j ];
if tBar is TToolbar then
begin
// Vanish the toolbar !!
// TToolbar(tBar).visible := false;
// break;
// if vanishing 这几句可以使工具栏隐去
for k := 0 to TToolbar(tBar).controlcount-1do
begin
tBut := TToolbar(tBar).controls[ k ];
if tBut is TToolbutton then
// 这几句可以控制按钮的显隐,只需在此测试按钮名字,即可对具体按钮加以控制
TToolbutton(tBut).enabled := false;
end;
end;
end;
end;