From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。

---
 HotelPms.Share.Windows/Report/FormReport .cs |  157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 157 insertions(+), 0 deletions(-)

diff --git a/HotelPms.Share.Windows/Report/FormReport .cs b/HotelPms.Share.Windows/Report/FormReport .cs
new file mode 100644
index 0000000..ac905d7
--- /dev/null
+++ b/HotelPms.Share.Windows/Report/FormReport .cs
@@ -0,0 +1,157 @@
+using HotelPms.Share.Util;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Printing;
+using System.IO;
+using System.Windows.Forms;
+
+namespace HotelPms.Share.Windows.Report
+{
+    public class FormReport  : PrintGdiPlus, IDisposable, IReport
+    {
+        #region  ★★★★★ Declartions ★★★★★
+
+        private bool m_Disposed = false;
+        private float m_CurrentY = 0F;
+        private List<List<Cell>> m_ObjList = null;
+        private List<Cell> m_CurrentPageData = null;
+        private Rectangle m_OwnerArea;
+        private string m_Title = string.Empty;
+
+        #endregion
+
+        #region  ★★★★★ Property ★★★★★
+
+
+
+
+        #endregion
+
+        #region  ★★★★★ Class Event ★★★★★
+
+        public FormReport(List<List<Cell>> objList, Rectangle ownerArea, PaperKind paper, string title)
+        {
+
+            m_ObjList = objList;
+            m_OwnerArea = ownerArea;
+            m_Title = title;
+            foreach (PaperSize ps in m_PrintDoc.PrinterSettings.PaperSizes)
+            {
+                if (ps.Kind == paper)
+                {
+                    m_PrintDoc.DefaultPageSettings.PaperSize = ps;
+                    break;
+                }
+            }
+
+            if (m_OwnerArea.Width > m_OwnerArea.Height) { m_PrintDoc.DefaultPageSettings.Landscape = true; }
+            this.PrintDoc.PrintPage += PrintDoc_PrintPage;
+            m_PageIndex = 0;
+        }
+
+        ~FormReport()
+        {
+            Dispose(false);
+        }
+
+        protected override void Dispose(bool disposing)
+        {
+            if (!m_Disposed)   //一回だけ
+            {
+                if (disposing)
+                {
+                    //Managed Resources
+                }
+
+                //Unmanaged resources
+                m_Disposed = true;
+            }
+            base.Dispose(disposing);
+        }
+
+        public override void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        #endregion
+
+        #region  ★★★★★ Control Event ★★★★★
+
+        private void PrintDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
+        {
+            m_CurrentPageData = m_ObjList[m_PageIndex];
+            e.Graphics.PageUnit = GraphicsUnit.Pixel; //画面と同じ単位
+            //e.Graphics.PageUnit = GraphicsUnit.Display;
+
+            //印字範囲 98%
+            float width = (e.PageBounds.Width - (int)e.PageSettings.HardMarginX * 2) * e.Graphics.DpiX / 100;
+            float height = (e.PageBounds.Height - (int)e.PageSettings.HardMarginY * 2) * e.Graphics.DpiY / 100;
+            m_PrintWidth = width * 0.98F;
+            m_PrintHeight = height * 0.98F;
+            m_LeftMargins = (width * 1.0F - m_PrintWidth) / 2;
+            m_TopMargins = (height * 1.0F - m_PrintHeight) / 2;
+
+            Font titleFont = new Font("MS UI Gothic", 18F);
+            Font detailFont = new Font("MS UI Gothic", 9F);
+            m_TitleHeight = GetTextHeight(e.Graphics, titleFont) + 6F;  //ヘッダーの高さ
+            m_DetailRowHeight = GetTextHeight(e.Graphics, detailFont) + 6F;  //ヘッダーの高さ
+            float detailHeight = m_PrintHeight - m_TitleHeight;
+            
+            //タイトルの印刷
+            Cell title = new Cell();
+            title.Text = m_Title;
+            title.Style.RectangleF = new RectangleF(new PointF(m_LeftMargins, m_TopMargins), new SizeF(m_PrintWidth, m_TitleHeight));
+            title.Style.Font = titleFont;
+            DrawCell(e.Graphics, title);
+
+            //印字時間+ページ
+            m_CurrentY = m_TopMargins + m_TitleHeight - m_DetailRowHeight;
+            Cell page_printDate = new Cell();
+            page_printDate.Text = string.Format("{0}  頁:{1}/{2}", DateTime.Now.ToString("yyyy年MM月dd日(ddd) HH:mm:ss"), m_PageIndex + 1, m_ObjList.Count);
+            page_printDate.Style.RectangleF = new RectangleF(new PointF(m_LeftMargins, m_CurrentY), new SizeF(m_PrintWidth, m_DetailRowHeight));
+            page_printDate.Style.Alignment = StringAlignment.Far;
+            DrawCell(e.Graphics, page_printDate);
+            
+            //画面の描く
+            float rateX = (e.Graphics.DpiX / 96.0F);
+            float rateY = (e.Graphics.DpiY / 96.0F);
+
+            float zoomRate = (m_PrintWidth / (m_OwnerArea.Width * rateX)) < (detailHeight / (m_OwnerArea.Height * rateY)) ? (m_PrintWidth / (m_OwnerArea.Width * rateX)) : (detailHeight / (m_OwnerArea.Height * rateY));
+
+            foreach (Cell item in m_CurrentPageData)
+            {
+                item.Style.RectangleF = new RectangleF(m_LeftMargins + item.Style.RectangleF.Left * rateX * zoomRate, m_TopMargins + item.Style.RectangleF.Top * rateX * zoomRate + m_TitleHeight, item.Style.RectangleF.Width * rateX * zoomRate, item.Style.RectangleF.Height * rateX * zoomRate);
+                DrawCell(e.Graphics, item);
+            }
+
+            //e.Graphics.DrawRectangle(Pens.Blue, m_LeftMargins, m_TopMargins + m_TitleHeight, (m_OwnerArea.Width * rateX * zoomRate), (m_OwnerArea.Height * rateY * zoomRate));
+
+            //次のページ
+            if (m_PageIndex == m_ObjList.Count - 1)
+            {
+                e.HasMorePages = false;
+            }
+            else
+            {
+                m_PageIndex++;
+                e.HasMorePages = true;
+            }
+        }
+
+        #endregion
+
+        #region  ★★★★★ Private Function ★★★★★
+
+        #endregion
+
+        #region  ★★★★★ Public  Function ★★★★★
+
+
+
+        #endregion
+    }
+}

--
Gitblit v1.10.0