Просмотр отчёта...

отредактировано 22:43 Раздел: FastReport 4.0
Прошу помощи в написании приложения, отображающего отчёты в пользовательской папке с предварительным просмотром...

Как это выглядит:
1. На форме размещаем ListView и пишем код, который отображает все файлы в папке report.
2. Рядом, располагаем "окно предварительного просмотра", если пользователь выбрал файл из списка - отображаем в нём этот отчёт: (уменьшенная версия)

2320056.png

На изображении присутствует компонент PreviewBox из библиотеки EhLib. Но, можно использовать и стандартный frxPreview.
unit Unit9;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, ShellApi, Vcl.ImgList,
  Vcl.Menus, frxClass, frxPreview, PrViewEh;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    frxReport1: TfrxReport;
    PreviewBox1: TPreviewBox;
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure LV_InsertFiles(strPath: string; ListView: TListView; ImageList: TImageList);
 var
   i: Integer;
   Icon: TIcon;
   SearchRec: TSearchRec;
   ListItem: TListItem;
   FileInfo: SHFILEINFO;
 begin
   // Create a temporary TIcon
  Icon := TIcon.Create;
   ListView.Items.BeginUpdate;
   try
     // search for the first file
    i := FindFirst(strPath + '*.fr3*', faAnyFile, SearchRec);
     while i = 0 do
     begin
       with ListView do
       begin
         // On directories and volumes
        if ((SearchRec.Attr and FaDirectory <> FaDirectory) and
           (SearchRec.Attr and FaVolumeId <> FaVolumeID)) then
         begin
           ListItem := ListView.Items.Add;
           //Отображаем имя файла
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_DISPLAYNAME);
           Listitem.Caption := FileInfo.szDisplayName;
           // Получаме информацию о файлах
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_TYPENAME);
           ListItem.SubItems.Add(FileInfo.szTypeName);
           //Получаем иконку для файлов в списке
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
             SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
           icon.Handle := FileInfo.hIcon;
           ListItem.ImageIndex := 1;
           // Уничтожаем
          DestroyIcon(FileInfo.hIcon);
         end;
       end;
       i := FindNext(SearchRec);
     end;
   finally

     ListView.Items.EndUpdate;
   end;
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   // Устанавливаем Imagelist для ListView
  ListView1.SmallImages := ImageList1;
   // Устанавливаем свойство ViewStyle в "vsReport"
  ListView1.ViewStyle := vsReport;
  LV_InsertFiles('.\reports\', ListView1, ImageList1); // Пишем "относительный" путь к нашей папке с отчетами.
 end;


end.
Исходник:

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.