• <menu id="w2i4a"></menu>
  • logo FastReport.Net教程2020(持續(xù)更新中)

    文檔首頁(yè)>>FastReport.Net教程2020(持續(xù)更新中)>>如何在報(bào)表預(yù)覽中制作自定義工具欄

    如何在報(bào)表預(yù)覽中制作自定義工具欄


    大多數(shù)報(bào)表生成器都有一個(gè)帶有工具欄的報(bào)表查看模式,您可以從中對(duì)報(bào)表進(jìn)行各種操作。例如,翻頁(yè)、打印、導(dǎo)出等。但是,有時(shí)沒(méi)有足夠的按鈕具有您想要的功能。這可以是快速導(dǎo)出為某種格式,也可以是將報(bào)表發(fā)送給審閱,或者您可能想批量發(fā)送報(bào)表。無(wú)論哪種方式,標(biāo)準(zhǔn)工具欄FastReport.Net都不允許您添加自定義功能。但是開(kāi)發(fā)人員提供了創(chuàng)建自己的預(yù)覽模式的可能性。很棒,并不是每個(gè)人都喜歡標(biāo)準(zhǔn)的預(yù)覽版。許多人希望刪除一些不必要的按鈕,但會(huì)添加自己的“features”功能。因此,讓我們看一下如何快速輕松地制作報(bào)表預(yù)覽。在FastReport.dll庫(kù)中,我們可以使用標(biāo)準(zhǔn)預(yù)覽模式下的所有功能。

    讓我們看一下這個(gè)例子。典型的Windows窗體應(yīng)用程序。我們正在將FastReport.dll庫(kù)連接到它。在表單上,我們添加了工具欄組件ToolStrip和PreviewControl——一個(gè)標(biāo)準(zhǔn)的報(bào)表查看器。該組件已經(jīng)擁有自己的工具欄,但是很容易隱藏在工具欄屬性中。

    在工具欄上,我們創(chuàng)建了具有必要功能的按鈕:

    如何在報(bào)表預(yù)覽中制作自定義工具欄

    打開(kāi)報(bào)表、打印、導(dǎo)出、翻頁(yè)和具有其功能的特殊按鈕。它將以csv格式將報(bào)表保存在指定的文件夾中。這樣的QuickSave。假設(shè)我們經(jīng)常使用此特定功能,因此我們將其移至單獨(dú)的按鈕?,F(xiàn)在讓我們看一下應(yīng)用程序代碼:

    public partial class Form1 : Form
     {
     private Report FReport;
     private DataSet FDataSet;
     
     public Form1()
     {
     InitializeComponent();
     }
     
     private void LoadBtn_Click(object sender, EventArgs e)
     {
     FReport = new Report();
     FReport.Preview = previewControl1;
     
     using (OpenFileDialog file = new OpenFileDialog()) 
     {
     if (file.ShowDialog() == DialogResult.OK)
     {
     FDataSet = new DataSet();
     FDataSet.ReadXml("K:/My documents/nwind.xml");
     FReport.Load(file.FileName);
     FReport.RegisterData(FDataSet, "NorthWind");
     FReport.Prepare();
     FReport.ShowPrepared();
     }
     }
     }

    下載報(bào)表按鈕將打開(kāi)一個(gè)標(biāo)準(zhǔn)的“File Open”文件打開(kāi)對(duì)話框窗口。然后,我們將數(shù)據(jù)庫(kù)上傳到數(shù)據(jù)源,在報(bào)表對(duì)象中上傳選定的報(bào)表模板,將其注冊(cè)為數(shù)據(jù)源,以在組件預(yù)覽中收集并顯示報(bào)表。

    private void SaveBtn_Click(object sender, EventArgs e)
     {
     SaveBtn.DropDownItems.Clear();
     Listlist = new List();
     RegisteredObjects.Objects.EnumItems(list);
     
     ToolStripMenuItem saveNative = new ToolStripMenuItem("Save to .fpx file...");
     saveNative.Click += new EventHandler(item_Click);
     SaveBtn.DropDownItems.Add(saveNative);
     
     foreach (ObjectInfo info in list)
     {
     if (info.Object != null && info.Object.IsSubclassOf(typeof(ExportBase)))
     {
     ToolStripMenuItem item = new ToolStripMenuItem(Res.TryGet(info.Text) + "...");
     item.Tag = info;
     item.Click += new EventHandler(item_Click);
     if (info.ImageIndex != -1)
     item.Image = Res.GetImage(info.ImageIndex);
     SaveBtn.DropDownItems.Add(item);
     }
     }
     }

    導(dǎo)出/保存按鈕實(shí)際上有一個(gè)帶有各種導(dǎo)出格式的下拉列表。首先,我清除下拉列表,并創(chuàng)建要導(dǎo)出的對(duì)象列表。加載所有已注冊(cè)對(duì)象的列表。

    然后,我將第一個(gè)元素添加到導(dǎo)出列表中——導(dǎo)出本機(jī)格式,即fpx格式。所有其他可用格式將循環(huán)添加到列表中。一些導(dǎo)出有圖片。列表中的每個(gè)元素都分配給處理按下項(xiàng)目的item_Click事件。

    private void item_Click(object sender, EventArgs e)
     {
     ObjectInfo info = (sender as ToolStripMenuItem).Tag as ObjectInfo;
     if (info == null)
     {
     previewControl1.Save();
     }
     else
     {
     ExportBase export = Activator.CreateInstance(info.Object) as ExportBase;
     export.CurPage = previewControl1.PageNo;
     export.Export(previewControl1.Report);
     }
     }

    事件處理程序item_Click正在導(dǎo)出報(bào)表,該報(bào)表當(dāng)前顯示在“Preview”預(yù)覽組件中。

    private void PrintBtn_Click(object sender, EventArgs e)
     {
     previewControl1.Print();
     }

    “Print”打印按鈕將打開(kāi)“ PrintDoc”對(duì)話框窗口。

    private void FirstBtn_Click(object sender, EventArgs e)
     {
     previewControl1.First();
     }

    “First”按鈕顯示報(bào)表的第一頁(yè)。

    private void PrevBtn_Click(object sender, EventArgs e)
     {
     previewControl1.Prior();
     }

    “Prev”按鈕顯示報(bào)表的上一頁(yè)。

    private void NextBtn_Click(object sender, EventArgs e)
     {
     previewControl1.Next();
     }

    “Next”按鈕顯示報(bào)表的下一頁(yè)。

    private void LastBtn_Click(object sender, EventArgs e)
     {
     previewControl1.Last();
     }

    最后,“Last”按鈕顯示報(bào)表的最后一頁(yè)。

    private void PageNo_KeyDown(object sender, KeyEventArgs e)
     {
     if (e.KeyData == Keys.Enter)
     {
     previewControl1.PageNo = int.Parse(PageNo.Text);
     }
     }

    按鈕之間的文本字段顯示當(dāng)前頁(yè)面的編號(hào)。更改此值可以在報(bào)表頁(yè)面之間切換。

    private void PreviewControl1_PageChanged(object sender, EventArgs e)
     {
     PageNo.Text = previewControl1.PageNo.ToString();
     }

    但是,如果使用按鈕在頁(yè)面之間切換,則文本字段中的頁(yè)面編號(hào)也會(huì)更改。根據(jù)預(yù)覽組件中的頁(yè)面更改事件。

    private void QuickSaveCSVBtn_Click(object sender, EventArgs e)
     {
     FastReport.Export.Csv.CSVExport ex = new FastReport.Export.Csv.CSVExport();
     FReport.Export(ex, "Text.csv");
     }

    最后,我們的自定義按鈕。它的功能無(wú)處不在,僅用于演示。它以csv格式保存報(bào)表。因此,您可以為自己或客戶創(chuàng)建方便的報(bào)表查看器,并為其提供必要的功能。

    預(yù)覽版中附加功能的夢(mèng)想可能是無(wú)限的,開(kāi)發(fā)人員為我們提供了這一機(jī)會(huì)。

    而且,如果您希望在顯示來(lái)自應(yīng)用程序代碼的報(bào)表時(shí)使用預(yù)覽組件,我們將使用以下代碼:

    CusomPreviewForm prev = new CusomPreviewForm ();
    Report report = new Report();
    report.Load("K:/My documents/lines.frx");
    report.Preview = prev.previewControl1;
    report.Show();
    prev.ShowDialog();

    在這里,我們覆蓋了報(bào)表的視圖組件。說(shuō)實(shí)話,我們必須公開(kāi)PreviewControl1。

    就這樣。希望您能利用這個(gè)巨大的機(jī)會(huì)來(lái)制作自定義查看器報(bào)表。

     

     

    產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | 在線客服

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();