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/Util/ValueChangeListener.cs |  245 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 245 insertions(+), 0 deletions(-)

diff --git a/HotelPms.Share.Windows/Util/ValueChangeListener.cs b/HotelPms.Share.Windows/Util/ValueChangeListener.cs
new file mode 100644
index 0000000..d5d11ba
--- /dev/null
+++ b/HotelPms.Share.Windows/Util/ValueChangeListener.cs
@@ -0,0 +1,245 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Reflection;
+using HotelPms.Share.Windows.Component;
+using System.Windows.Forms;
+using HotelPms.Share.Util;
+
+namespace HotelPms.Share.Windows.Util
+{
+    public enum ChangeEditingModeResult : int
+    {
+        Error = 0,  //失敗
+        Inputting,  //入力登録中状態
+        Editting,   //編集中状態
+        ReLoad,     //最新情報をロードした
+        Other,      //その他
+    }
+
+    /// <summary>
+    /// 編集フォームのモード
+    /// </summary>
+    public enum UpdateFormMode : int
+    {
+        Normal = 0,  //閲覧中、修正可能
+        Edit,        //閲覧から修正中
+        New,         //新規
+        Inputting,   //新規登録中
+        ReadOnly,    //閲覧モード、修正不可
+    }
+
+    public class ValueChangeListener :IDisposable
+    {
+        private static Dictionary<string, Bitmap> ResourceImage = new Dictionary<string, Bitmap>();
+
+        //Control
+        private UpdateFormMode curUpdateMode = UpdateFormMode.New;
+        private Control btnEditStatus = null;
+        public event CTextBoxArray.TBArrayEventHandler BeforeChangeToEditingMode = null;
+        private bool m_IsAntLabel = false;
+        private System.Windows.Forms.Timer timer1 = null;
+
+        public UpdateFormMode CurUpdateMode
+        {
+            get { return curUpdateMode; }
+            set { curUpdateMode = value; }
+        }
+
+        public ValueChangeListener(Control btnEditStatus)
+        {
+            m_IsAntLabel = (btnEditStatus is AntLabel);
+            if (!m_IsAntLabel)
+            {
+                timer1 = new System.Windows.Forms.Timer();
+                timer1.Interval = 500;
+                timer1.Tick += new EventHandler(timer1_Tick);
+            }
+
+            this.btnEditStatus = btnEditStatus;
+        }
+
+        private Bitmap GetResourceImage(string fileName)
+        {
+            Bitmap bmp = null;
+            if (!ResourceImage.TryGetValue(fileName, out bmp))
+            {
+                global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HotelPms.Share.Windows.Properties.Resources", Assembly.GetExecutingAssembly());
+                object obj = temp.GetObject(fileName);
+                bmp = ((System.Drawing.Bitmap)(obj));
+                ResourceImage.Add(fileName, bmp);
+            }
+            return bmp;
+        }
+
+        private void timer1_Tick(object sender, EventArgs e)
+        {
+            Button obj = btnEditStatus as Button;
+            if (CConvert.ToBool(obj.Tag) == true)
+            {
+                if (curUpdateMode == UpdateFormMode.Edit)
+                {
+                    obj.Image = GetResourceImage("henshu_w");
+                }
+                else
+                {
+                    obj.Image = GetResourceImage("toroku_w");
+                }
+                obj.Tag = false;
+            }
+            else
+            {
+                if (curUpdateMode == UpdateFormMode.Edit)
+                {
+                    obj.Image = GetResourceImage("henshu_b");
+                }
+                else
+                {
+                    obj.Image = GetResourceImage("toroku_b");
+                }
+                obj.Tag = true;
+            }
+        }
+
+        /// <summary> [編集中(点滅)][登録中][登録中(点滅)][閲覧中]の更新
+        /// </summary>
+        public void SetEditStatusStyle()
+        {
+            if (m_IsAntLabel)
+            {
+                AntLabel label = btnEditStatus as AntLabel;
+                label.AnimationEnabled = false;
+                switch (curUpdateMode)
+                {
+                    case UpdateFormMode.Edit:
+                        label.Text = "編集中";
+                        label.Tag = true;
+                        label.EndBackColor = Color.FromArgb(192, 64, 0);
+                        label.BackColor = Color.PapayaWhip;
+                        label.AnimationEnabled = true;
+                        break;
+                    case UpdateFormMode.New:
+                        label.Text = "登録中";
+                        label.EndBackColor = Color.FromArgb(64, 0, 64);
+                        label.BackColor = Color.PapayaWhip;
+                        break;
+                    case UpdateFormMode.Inputting:
+                        label.Text = "登録中";
+                        label.EndBackColor = Color.FromArgb(0, 64, 0);
+                        label.BackColor = Color.PapayaWhip;
+                        label.Tag = true;
+                        label.AnimationEnabled = true;
+                        break;
+                    default:
+                        label.Text = "閲覧中";
+                        label.EndBackColor = Color.FromArgb(0, 0, 64);
+                        label.BackColor = Color.PapayaWhip;
+                        break;
+                }
+            }
+            else
+            {
+                Button obj = btnEditStatus as Button;
+                timer1.Enabled = false;
+                switch (curUpdateMode)
+                {
+                    case UpdateFormMode.Edit:
+                        obj.Image = GetResourceImage("henshu_b");
+                        obj.Tag = true;
+                        timer1.Enabled = true;
+                        break;
+                    case UpdateFormMode.New:
+                        obj.Image = GetResourceImage("toroku_w");
+                        break;
+                    case UpdateFormMode.Inputting:
+                        obj.Image = GetResourceImage("toroku_b");
+                        obj.Tag = true;
+                        timer1.Enabled = true;
+                        break;
+                    default:
+                        obj.Image = GetResourceImage("etsuranchu");
+                        break;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 閲覧モードから編集中に変った時(Overwrite)
+        /// </summary>
+        /// <returns></returns>
+        public ChangeEditingModeResult ChangeEditingBefore()
+        {
+            if (BeforeChangeToEditingMode != null)
+            {
+                CTextBoxArrayBaseEventArgs e = new CTextBoxArrayBaseEventArgs();
+                e.ChangeEditingModeResult = (int)ChangeEditingModeResult.Other;
+                BeforeChangeToEditingMode(this, 0, e);
+                return (ChangeEditingModeResult)e.ChangeEditingModeResult; 
+            }
+            return ChangeEditingModeResult.Other;
+        }
+
+        /// <summary>
+        /// 画面の編集モードの更新
+        /// </summary>
+        /// <param name="mode"></param>
+        public ChangeEditingModeResult SetUpdateFormMode(UpdateFormMode mode)
+        {
+            if (curUpdateMode == UpdateFormMode.Normal && mode == UpdateFormMode.Edit)
+            {
+                ChangeEditingModeResult ret = ChangeEditingBefore();
+                if (ret.Equals(ChangeEditingModeResult.ReLoad)
+                    || ret.Equals(ChangeEditingModeResult.Error))
+                {
+                    return ret;
+                }
+            }
+
+            curUpdateMode = mode;
+            SetEditStatusStyle();   //表示更新
+
+            switch (mode)
+            {
+                case UpdateFormMode.Edit:
+                    return ChangeEditingModeResult.Editting;
+                case UpdateFormMode.Inputting:
+                    return ChangeEditingModeResult.Inputting;
+                default:
+                    break;
+            }
+            return ChangeEditingModeResult.Other;
+        }
+
+        /// <summary>
+        /// 編集中もしくは登録中モードへ
+        /// </summary>
+        /// <returns></returns>
+        public ChangeEditingModeResult ChangeToEditingMode()
+        {
+            if (curUpdateMode == UpdateFormMode.ReadOnly)
+            {
+                return ChangeEditingModeResult.Error;
+            }
+
+            ChangeEditingModeResult ret = ChangeEditingModeResult.Other;
+            if (curUpdateMode == UpdateFormMode.Normal)
+            {
+                ret = SetUpdateFormMode(UpdateFormMode.Edit);
+            }
+            else if (curUpdateMode == UpdateFormMode.New)
+            {
+                ret = SetUpdateFormMode(UpdateFormMode.Inputting);
+            }
+            return ret;
+        }
+
+        public void Dispose()
+        {
+            try
+            {
+            }
+            catch { }
+        }
+    }
+}

--
Gitblit v1.10.0