public override void OnClick(SourceGrid.CellContext sender, EventArgs e) { base.OnClick(sender, e); // 顯示目前焦點所在的儲存格屬於第幾頁。 SourceGrid.Grid grid = (SourceGrid.Grid)sender.Grid; int row = sender.Position.Row; if (row < 1) { return; } int lineIdx = m_Form.GetBrailleLineIndex(row); int linesPerPage = AppGlobals.Config.Braille.LinesPerPage; bool needPageFoot = AppGlobals.Config.Printing.PrintPageFoot; int currPage = AppGlobals.CalcCurrentPage(lineIdx, linesPerPage, needPageFoot) + 1; int totalPages = AppGlobals.CalcTotalPages(m_Form.BrailleDoc.Lines.Count, linesPerPage, needPageFoot); m_Form.PageNumberText = currPage.ToString() + "/" + totalPages.ToString(); //if (m_Form.DebugMode) //{ // SourceGrid.Grid grid = (SourceGrid.Grid)sender.Grid; // int row = sender.Position.Row; // int col = sender.Position.Column; // BrailleWord brWord = (BrailleWord)grid[row, col].Tag; // string brScreenText = brWord.CellList.ToString(); // string brPrinterText = BrailleGlobals.FontConvert.ToString(brWord); // m_Form.StatusBar.Items[0].Text = brWord.Text + // "(" + brScreenText + ") " + // 顯示時的點字 16 進位字串 // "[" + brPrinterText + "]"; // 列印時的點字 16 進位字串 //} }
/// <summary> /// 在執行列印前必須進行的初始化參數工作。明眼字及點字於列印之前都必須呼叫此方法。 /// </summary> private void InitializePrintParameters() { m_TotalPages = AppGlobals.CalcTotalPages(m_BrDoc.Lines.Count, m_PrintOptions.LinesPerPage, m_PrintOptions.PrintPageFoot); if (m_PrintOptions.AllPages) // 列印全部? { m_PrintOptions.FromPage = 1; m_PrintOptions.ToPage = m_TotalPages; m_PageNum = 0; } else { // 只列印特定頁次範圍 m_PageNum = m_PrintOptions.FromPage - 1; // 修正終止頁次 if (m_PrintOptions.ToPage > m_TotalPages) { m_PrintOptions.ToPage = m_TotalPages; } } // 起始頁碼 if (m_PrintOptions.ReassignStartPageNumber) { m_DisplayedPageNum = m_PrintOptions.StartPageNumber; } else { m_DisplayedPageNum = m_PageNum + 1; } m_BeginOrgPageNumber = -1; // -1 表示沒有指定原書頁碼。 m_EndOrgPageNumber = -1; // -1 表示沒有指定原書頁碼。 m_PrintedPageCount = 0; }
/// <summary> /// 將目前的列印參數蒐集並集中存入 PrintOptions 物件。 /// </summary> /// <returns></returns> private PrintOptions GetPrintOptions() { PrintOptions prnOpt = new PrintOptions { LinesPerPage = AppGlobals.Config.Braille.LinesPerPage, PrintPageFoot = chkPrintPageFoot.Checked, // 列印範圍 AllPages = rdoPrintAll.Checked }; if (!prnOpt.AllPages) { string[] pageRange = txtPageRange.Text.Split(new char[] { '-' }); if (pageRange.Length != 2) { MsgBoxHelper.ShowInfo("列印範圍無效: " + txtPageRange.Text); txtPageRange.Focus(); return(null); } prnOpt.FromPage = Convert.ToInt32(pageRange[0]); prnOpt.ToPage = Convert.ToInt32(pageRange[1]); if (prnOpt.FromPage <= 0 || prnOpt.ToPage <= 0 || prnOpt.FromPage > prnOpt.ToPage) { MsgBoxHelper.ShowInfo("列印範圍無效: " + txtPageRange.Text); txtPageRange.Focus(); return(null); } int totalPages = AppGlobals.CalcTotalPages(m_BrDoc.Lines.Count, prnOpt.LinesPerPage, prnOpt.PrintPageFoot); if (prnOpt.FromPage > totalPages || prnOpt.ToPage > totalPages) { MsgBoxHelper.ShowInfo("列印範圍無效! 起始頁或終止頁超出總頁數。"); txtPageRange.Focus(); return(null); } } // 起始頁碼 prnOpt.ReassignStartPageNumber = chkChangeStartPageNum.Checked; if (prnOpt.ReassignStartPageNumber) { try { prnOpt.StartPageNumber = Convert.ToInt32(txtStartPageNumber.Text); if (prnOpt.StartPageNumber < 1) { MsgBoxHelper.ShowInfo("無效的起始頁碼: " + txtStartPageNumber.Text); return(null); } } catch { MsgBoxHelper.ShowInfo("無效的起始頁碼: " + txtStartPageNumber.Text); return(null); } } // 手動雙面列印 switch (cboPrintTextManualDoubleSide.SelectedIndex) { case 1: prnOpt.DoubleSideEffect = DoubleSideEffect.OddPages; break; case 2: prnOpt.DoubleSideEffect = DoubleSideEffect.EvenPages; break; default: prnOpt.DoubleSideEffect = DoubleSideEffect.None; break; } prnOpt.PrinterName = cboPrinters.Text; prnOpt.PrinterNameForBraille = cboPrintersForBraille.Text; prnOpt.PaperSourceName = m_PaperSourceName; prnOpt.PaperName = m_PaperName; prnOpt.OddPageMargins = m_OddPageMargins; prnOpt.EvenPageMargins = m_EvenPageMargins; prnOpt.BrSendPageBreakAtEndOfDoc = chkSendPageBreakAtEof.Checked; return(prnOpt); }