Каким образом можно добавить кнопку в окно предварительного просмотра?

Question: Каким образом можно добавить кнопку в окно предварительного просмотра?

Answer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses frxClass, frxPreview, ComCtrls, ToolWin, Buttons; 
... 
procedure TForm1.ButtonClick(Sender: TObject); 
begin 
ShowMessage('My Button pressed'); 
end; 
procedure TForm1.frxReport1Preview(Sender: TObject); 
var Button: TSpeedButton; 
begin // Добавление новой кнопки 
Button := TSpeedButton.Create(TfrxPreviewForm(frxReport1.PreviewForm).ToolBar); 
Button.Parent:=TfrxPreviewForm(frxReport1.PreviewForm).ToolBar; 
Button.Caption:='My Button'; 
Button.Width:=60; 
Button.Left:=650; // Обработчик новой кнопки 
Button.OnClick:=ButtonClick; 
end; 

Также кнопку в стандартный Preview можно добавить не из события OnPreview, а из OnEndDoc. Данные вариант полезен для двух случаев: 1) Когда обработчик этой кнопки, что то делает с данными предварительного просмотра. В этом случае создавать кнопку из OnPreview нежелательно, так как она будет активной еще во время построения отчета. 2) Когда доп. кнопка должна появится по некоторому условию, которое задается в предпечатном диалоге (frxDialogPage). +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Для кнопки PDF экспорта

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxExportPDF, frxPreview, frxDsgnIntf, Menus; 
type TForm1 = class(TForm) frxReport1: TfrxReport; 
frxPDFExport1: TfrxPDFExport; 
SaveDialog1: TSaveDialog; 
procedure FormCreate(Sender: TObject); 
procedure frxReport1Preview(Sender: TObject); 
procedure PDFExport(Sender: TObject); 
private { Private declarations } 
public { Public declarations } 
end; 
var Form1: TForm1; 
implementation {$R *.dfm} 
procedure TForm1.PDFExport(Sender: TObject); 
begin 
if SaveDialog1.Execute then 
begin frxPDFExport1.FileName:=SaveDialog1.FileName; 
TfrxPreview(frxReport1.Preview).Export(frxPDFExport1); 
end; 
end; 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
frxReport1.ShowReport; 
end; 
procedure TForm1.frxReport1Preview(Sender: TObject); 
var i, j, mi: integer; 
begin 
TfrxPreviewForm(frxReport1.PreviewForm).PdfB.OnClick:=PDFExport; 
for i := 0 to frxExportFilters.Count - 1 do 
begin 
if TfrxCustomExportFilter(frxExportFilters[i].Filter).ClassName = 'TfrxPDFExport' then 
mi:=i; 
end; 
TfrxPreviewForm(frxReport1.PreviewForm).ExportPopup.Items[mi].OnClick:=PDFExport;
for i:=0 to TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items.Count-1 do 
begin 
if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Caption=TfrxPreviewForm(frxReport1.PreviewForm).ExportB.Hint then 
begin 
for j:=0 to TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Count-1 do 
if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i][j].Caption=TfrxPreviewForm(frxReport1.PreviewForm).ExportPopup.Items[mi].Caption then 
TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i][j].OnClick:=PDFExport; 
end; 
if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Caption=TfrxPreviewForm(frxReport1.PreviewForm).PdfB.Hint then 
TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].OnClick:=PDFExport; 
end; 
end; 
end.