1. 概要說明
🎯 模組設計目的
T3_1_手算方法 係 Tera計算3_Utility 軟體套件中,專責顯示「人工手算公式」之教育訓練模組。本模組將物流中心佈局設計之基本演算思維與核心概念顯示於畫面上,以協助使用者紮實建立物流工程計算之基礎認知。
1.1 主要特色
📚 教育輔助工具
闡明物流計算之基本觀念與廠區佈局之設計哲學。
🖥️ 簡約 UI 介面
採用 RichTextBox 提供清晰易讀之文字呈現,無須複雜操作。
🔗 整合於主選單
由主選單以強制互動 (Modal Dialog) 模式呼叫,關閉後即無縫返回主選單。
💡 傳遞設計哲學
傳授 Tera 計算系列軟體之整體開發思維與使用前提。
1.2 檔案結構
| 檔案名稱 | 類型 | 容量大小 | 功能說明 |
|---|---|---|---|
| T3_1_手計算方法.vb | Visual Basic 程式碼 | 6 行 | 包含事件處理程序之主程式檔 |
| T3_1_手計算方法.Designer.vb | Designer 程式碼 | 92 行 | UI 視覺設計師自動生成之程式碼(表單定義) |
| T3_1_手計算方法.resx | 資源檔 Resource | 151 行 | 介面資源檔(內含顯示之文字內容) |
2. 系統架構與設計
2.1 類別結構
📦 T3_1_手計算方法F 類別
繼承來源: System.Windows.Forms.Form
存取修飾子: Public
由 Designer 生成: 是(Partial Class 部分類別)
🔧 成員清單
| 種類 | 名稱 | 型別 | 存取權限 | 說明 |
|---|---|---|---|---|
| 🔘 控制項 | 閉じるBt | Button | Friend | 關閉視窗按鈕 |
| 🔘 控制項 | 使用期限L | Label | Friend | 顯示使用期限之標籤 |
| 🔘 控制項 | 著作權L | Label | Friend | 顯示著作權之標籤 |
| 🔘 控制項 | RichTextBox1 | RichTextBox | Friend | 文字內容展示區 |
| 📝 函式 | 閉じるBt_Click | Sub | Private | 關閉按鈕之點擊事件處理程序 |
| ⚙️ 函式 | InitializeComponent | Sub | Private | 初始化 UI 元件(自動生成) |
| ⚙️ 函式 | Dispose | Sub | Protected | 釋放記憶體資源(覆寫) |
2.2 相依性
📚 引用之命名空間
System.Windows.Forms- Windows 表單控制項System.Drawing- 渲染色彩、尺寸與位置等視覺元素System.ComponentModel- 元件模型(管理資源檔)
2.3 執行流程
1. [主選單] T3_Uty0メニュー.vb
↓
觸發 手計算方法Bt_Click 事件
2. [產出表單] T3_1_手計算方法F
↓
Dim F As New T3_1_手計算方法F
3. [顯示畫面] 以強制互動模式 (Modal Dialog) 顯示
↓
F.ShowDialog(Me)
4. [使用者操作] 使用者閱讀說明文字
↓
檢閱載入至 RichTextBox1 的內容
5. [結束] 使用者點擊關閉按鈕
↓
閉じるBt_Click → Me.Close()
6. [釋放資源]
↓
F.Dispose()
7. [返回主選單]
3. UI 元件細節
3.1 控制項清單
3.2 控制項屬性設定
🔘 閉じるBt (Button)
| 屬性 | 設定值 | 說明 |
|---|---|---|
| Name | 閉じるBt | 控制項識別名稱 |
| Text | "閉じる(メニュー画面に戻る)" | 按鈕顯示文字 |
| BackColor | RGB(192, 255, 192) | 淺綠色(高識別度) |
| Location | X=159, Y=826 | 配置於畫面左下方 |
| Size | 173 x 23 | 按鈕長寬尺寸 |
| TabIndex | 34 | Tab 鍵選取順序 |
| 事件 | Click → 閉じるBt_Click | 點擊時關閉視窗 |
🏷️ 使用期限L (Label)
| 屬性 | 設定值 | 說明 |
|---|---|---|
| Name | 使用期限L | 控制項識別名稱 |
| Text | " 使用期限: 2019/12/31" | 預設文字(執行期會動態更新為真實日期) |
| AutoSize | True | 依文字長度自動調整寬度 |
| Location | X=1233, Y=831 | 配置於畫面右下方 |
| TabIndex | 33 | Tab 鍵選取順序 |
🏷️ 著作權L (Label)
| 屬性 | 設定值 | 說明 |
|---|---|---|
| Name | 著作権L | 控制項識別名稱 |
| Text | "物流技術研究所" | 預設文字(執行期會動態更新) |
| Font | MS UI Gothic, 9pt | 字型設定 |
| AutoSize | True | 依文字長度自動調整寬度 |
| Location | X=857, Y=831 | 配置於畫面中下方 |
| TabIndex | 32 | Tab 鍵選取順序 |
📄 RichTextBox1 (RichTextBox)
| 屬性 | 設定值 | 說明 |
|---|---|---|
| Name | RichTextBox1 | 控制項識別名稱 |
| Font | MS UI Gothic, 12pt, Bold | 粗體大字型以利閱讀 |
| Location | X=66, Y=35 | 配置於畫面上方 |
| Size | 682 x 628 | 大面積文字展示區塊 |
| TabIndex | 35 | Tab 鍵選取順序 |
| Text | 由資源檔動態載入 | 內含核心教學文案 |
3.3 表單層級屬性設定
| 屬性 | 設定值 | 說明 |
|---|---|---|
| Name | T3_1_手計算方法F | 表單類別識別名稱 |
| Text | "Tera計算3_1_手計算方法" | 視窗標題列文字 |
| ClientSize | 1484 x 861 | 視窗內部可用空間尺寸 |
| AutoScroll | True | 當內容超出邊界時自動顯示捲軸 |
| AutoScaleMode | Font | 依據系統字型大小等比例縮放介面 |
| AutoScaleDimensions | 6.0F, 12.0F | 縮放基準維度 |
| StartPosition | CenterScreen | 彈出視窗時精確定位於螢幕正中央 |
4. 原始碼深度解析
4.1 主程式碼 (T3_1_手計算方法.vb)
Public Class T3_1_手計算方法F Private Sub 閉じるBt_Click(sender As Object, e As EventArgs) Handles 閉じるBt.Click Me.Close() End Sub End Class
📝 程式碼解說
本模組架構極度精簡,將焦點集中於視窗關閉之單一職責:
- 類別定義: 繼承標準 WinForms
Form基底類別。 - 事件處理: 綁定至關閉按鈕之 Click 事件。
- 執行動作: 呼叫
Me.Close()安全地銷毀目前的互動視窗。
4.2 事件處理程序規格
🔧 閉じるBt_Click 函式
| 項目 | 細節說明 |
|---|---|
| 存取修飾子 | Private - 僅限類別內部呼叫 |
| 回傳型別 | Sub - 無回傳值 |
| 傳入參數 |
sender As Object - 觸發事件的來源物件 (按鈕)e As EventArgs - 標準事件參數物件
|
| Handles 綁定 | 閉じるBt.Click - 訂閱按鈕之點擊事件 |
| 邏輯動作 | Me.Close() - 關閉視窗 |
4.3 執行流程深度拆解
[使用者操作] 1. 使用者點擊「關閉(返回主選單)」按鈕。 ↓ [事件觸發] 2. 閉じるBt 控制項觸發 Click 事件。 ↓ [函式執行] 3. 執行 閉じるBt_Click 函式。 - sender: 閉じるBt 物件 - e: EventArgs 物件 ↓ [視窗關閉程序] 4. 執行 Me.Close() 指令。 - Me = T3_1_手計算方法F 實體物件 - 啟動 Close() 銷毀程序。 ↓ [事件鏈鎖] 5. 依序觸發視窗關閉生命週期事件。 - FormClosing - FormClosed ↓ [歸還控制權] 6. 解除 Modal ShowDialog() 封鎖狀態。 - 系統控制權移交回主選單 (T3_Uty0メニュー.vb)。 ↓ [記憶體回收] 7. 主選單程式碼中執行 F.Dispose()。 - 徹底釋放 UI 控制代碼與記憶體資源。 ↓ [結束] 8. 主選單恢復可正常操作狀態。
4.4 RichTextBox 教學文案內容
📄 資源檔文字酬載
以下日文文案係由編譯後之資源檔載入至文字方塊中(原文呈現):
Tera計算3は、Tera計算1(各設備の要求保管量)を前提条件として、 物流機器設備の面積を自分の手で計算するツール集です。 レイアウト設計(配送センターの規模)は、単に面積合計だけでは決まりません。 実際に建屋の縦横有効寸法内に収まるか、柱や防火壁に干渉しないかなど検討し、 建築法や消防法などの関係法案に合致しているか、安全が確保されているか、 作業運用から見て移動距離や荷役方法が適切か、設備投資と投資コストがバランスが良いか。 レイアウト設計は、いろいろな設計要素はあるが、 ここでは 1.配送センターの規模規模を小さくまとめる。 2.前工程と後工程を近づける。 この2点に着目してください。 上記2点を行うために、物流機器設備の縦・横・高さの寸法が必要となります。 Tera計算2の計算方法と手順を参考に、Tera計算3で個々の面積計算方法を学習してください。
⚠️ 核心教學重點解析
- 前置條件: 本模組建立在已透過 TeraCalc1 算出各項設備保管量的前提之上。
- 宏觀佈局思維: 總結面積數字並不能直接等於佈局設計。設計師必須考量柱位跨距、防火牆區劃、建築與消防法規、人員走動距離及投資報酬率 (ROI) 之間之平衡。
- 兩大設計鐵律:
- 將物流中心之硬體面積規模縮減至最小極限。
- 將上下游作業製程之實體距離拉至最近。
- 交互學習: 鼓勵使用者借鏡 TeraCalc2 模組的思維來應用本模組之面積計算。
5. 介面設計與排版
5.1 視窗佈局示意圖
📐 幾何尺寸 (1484 x 861 像素)
(說明本軟體之設計目的與使用方法)
5.2 色彩配置
| UI 元素 | 色彩渲染 | RGB / 設計理由 |
|---|---|---|
| 關閉按鈕 | RGB(192, 255, 192) - 淺綠色代表安全退出 | |
| 表單背景底色 | 系統預設色彩 | |
| 文字展示區背景 | 純白色以提供最高文字對比度 | |
| 字體顏色 | 純黑色系統預設字 |
5.3 字體排版 (Typography)
| UI 元素 | 字型名稱 | 尺寸大小 | 字型樣式 |
|---|---|---|---|
| RichTextBox1 | MS UI Gothic | 12pt | 粗體 Bold |
| 著作權L (Copyright) | MS UI Gothic | 9pt | 標準 Regular |
| 使用期限L (Expiry) | MS UI Gothic | 系統預設 | 標準 Regular |
| 閉じるBt (Close) | MS UI Gothic | 系統預設 | 標準 Regular |
5.4 易用性與人體工學 (Usability)
👁️ 視覺清晰度
- 特大 12pt 粗體字有效減少長時間閱讀之眼睛疲勞。
- 粉彩綠色的退出按鈕自然吸引使用者視線。
- 強制於螢幕中央彈出,確保使用者立刻聚焦。
🖱️ 操作流暢度
- 按鈕具備極大之點擊判定區 (Hit-box: 173x23 像素)。
- 導引文字語意明確且無歧異。
- 支援自動捲軸,適應各種不同螢幕高度。
⌨️ 無障礙訪問
- 配置合理的 TabIndex 切換順序。
- 完全支援純鍵盤操作。
- 採用強制互動模式,迫使使用者必須閱讀後才可進行後續操作。
📱 響應式佈局
- 具備 AutoScroll 屬性防範文字溢出。
- Font-based 的 AutoScaleMode 可防止高解析度 (DPI) 螢幕發生破圖截斷現象。
6. 操作情境與使用方法
6.1 標準使用者操作流程
📋 循序漸進指南
- 自首頁主選單啟動
- 開啟 TeraCalc3_Utility 主選單。
- 點擊「手計算方法」按鈕。
- 閱讀核心文案
- 細讀文字方塊中所列出之物流設計準則。
- 向下捲動確保完整閱讀完畢。
- 內化設計原則
- 理解 TeraCalc3 工具所要達成的終極目標。
- 牢記兩大空間最佳化黃金準則。
- 關閉並進入實作
- 點擊綠色的關閉按鈕返回主選單。
- 帶著正確的設計邏輯,前往執行實際的數學工程模組。
6.2 目標使用情境
情境一:新進員工報到教育訓練
背景環境: 初級物流工程師首次接觸 TeraCalc 軟體。
核心目標: 在開始盲目輸入數字前,先建立正確的工程哲學。
標準流程:
- 啟動軟體程式。
- 規定必須先開啟此說明手冊視窗。
- 認知到:光靠把各區域面積加總,並不能產生一份可用的廠房設計圖。
- 將空間壓縮與作業站相鄰之原則內化至腦中。
產生之效益: 防範新手工程師對軟體算出的數學數字照單全收,而不考慮現實中法規與實體牆面的限制。
情境二:資深老手回鍋複習
背景環境: 經驗豐富的企劃人員在久未接觸本軟體後重新接手專案。
核心目標: 重新對齊「Tera 方法論」之設計哲學。
標準流程:
- 快速瀏覽文案宣告。
- 回憶起「動線距離極小化」與「空間緊密壓縮」的最高指導原則。
產生之效益: 確保在所有專案上皆貫徹一致的設施設計標準。
6.3 模組間之交互關聯
| 目標模組 | 關聯性說明 | 建議操作順序 |
|---|---|---|
| 進貨空間計算 | 將「空間壓縮原則」應用於進貨碼頭規劃。 | 手冊畫面 → 進貨空間模組 |
| 出貨空間計算 | 將「相鄰原則」應用於揀貨至打包的動線規劃。 | 手冊畫面 → 出貨空間模組 |
| 棧板打板計算 | 徹底貫徹占地面積壓縮的極致要求。 | 手冊畫面 → 棧板打板模組 |
| 貨車軌跡模擬 | 以真實物理限制,驗證紙上談兵的空間可行性。 | 手冊畫面 → 貨車軌跡模組 |
7. 客製化與擴充指南
7.1 修改教學文案內容
⚙️ 資源檔編輯法
教學文案並未被寫死 (Hardcoded) 於程式碼中,而是存放於 T3_1_手計算方法.resx 資源檔內。
修改程序:
- 使用 Visual Studio 開啟專案原始碼。
- 於方案總管中尋找並開啟
T3_1_手計算方法.resx檔案。 - 找到
RichTextBox1.Text之鍵值項目。 - 修改內容字串後存檔。
- 重新建置 (Rebuild) 整個專案方案。
注意事項: 雖然可以直接用文字編輯器修改 XML 結構,但強烈建議透過 Visual Studio 內建的資源編輯器進行,以防格式毀損。
7.2 未來功能擴充藍圖
擴充構想一:導入圖解影像
' 加入 PictureBox 以渲染圖表 Friend WithEvents 図解Pb As PictureBox ' 於 Form Load 時載入圖片 Private Sub T3_1_手計算方法F_Load(sender As Object, e As EventArgs) Handles MyBase.Load 図解Pb.ImageLocation = MyPath & "\LayoutConcept.jpg" 図解Pb.SizeMode = PictureBoxSizeMode.Zoom End Sub
擴充構想二:列印報表功能
' 新增列印按鈕 Friend WithEvents 印刷Bt As Button ' 列印觸發程序 Private Sub 印刷Bt_Click(sender As Object, e As EventArgs) Handles 印刷Bt.Click Dim pd As New PrintDocument() AddHandler pd.PrintPage, AddressOf PrintDocument_PrintPage pd.Print() End Sub Private Sub PrintDocument_PrintPage(sender As Object, e As PrintPageEventArgs) ' 將 RichTextBox 文字轉拋至印表機繪圖介面 e.Graphics.DrawString(RichTextBox1.Text, RichTextBox1.Font, Brushes.Black, 50, 50) End Sub
擴充構想三:PDF 匯出模組
' 透過 iTextSharp 等第三方庫新增 PDF 匯出按鈕 Private Sub PDF出力Bt_Click(sender As Object, e As EventArgs) Handles PDF出力Bt.Click Dim saveDialog As New SaveFileDialog() saveDialog.Filter = "PDF Files|*.pdf" If saveDialog.ShowDialog() = DialogResult.OK Then ' 呼叫外部 PDF 庫函式 ExportToPDF(RichTextBox1.Text, saveDialog.FileName) End If End Sub
擴充構想四:啟動超連結支援
' 允許文字方塊內的網址可供點擊 Private Sub T3_1_手計算方法F_Load(sender As Object, e As EventArgs) Handles MyBase.Load RichTextBox1.DetectUrls = True AddHandler RichTextBox1.LinkClicked, AddressOf RichTextBox1_LinkClicked End Sub Private Sub RichTextBox1_LinkClicked(sender As Object, e As LinkClickedEventArgs) Process.Start(e.LinkText) End Sub
7.3 UI 微調建議
| 欲客製化目標 | 修改對應之方法/屬性 | 設計建議 |
|---|---|---|
| 視窗解析度大小 | ClientSize 屬性 | 請依據目標客群螢幕微調(下限建議維持 1280x720) |
| 字型大小 | RichTextBox1.Font | 落於 10pt 至 14pt 區間 |
| 背景底色 | BackColor 屬性 | 保持柔和粉色系以降低刺眼感 |
| 按鈕位置配置 | Location 屬性 | 保持在底部置中,方便滑鼠快速鎖定 |
7.4 多國語言在地化 (i18n)
🌏 多語系環境建置
得益於已綁定 .resx 資源檔架構,多國語系轉換非常直覺:
- 建立特定語系專屬之資源檔(例如:T3_1_手計算方法.en-US.resx)。
- 翻譯並替換字串定義。
- 於執行期修改 Thread.CurrentCulture 以動態切換顯示文字。
8. 最佳實務與維護指引
8.1 程式碼撰寫規範
✅ 核心建議
- 命名慣例: 若交錯使用日文與英文命名,請嚴格保持團隊一致性。
- 註解習慣: 註解應著重說明「為什麼 (Why)」而非只描述「做了什麼 (What)」。
- 例外防護: 對於檔案 I/O 或資源呼叫,一律以 Try-Catch 區塊包覆。
- 記憶體管理: 操作非受控資源 (Unmanaged Object) 時,務必善用 Using 區塊。
8.2 效能瓶頸評估
| 效能指標 | 目前現狀 | 優化方向 |
|---|---|---|
| 文字渲染速度 | 自編譯之 .resx 批次載入 | 維持現狀即為最佳解(無 I/O 磁碟讀取負擔) |
| 表單開啟延遲 | 採強制互動 ShowDialog() 呼叫 | 維持現狀即為最佳解(防止主程式遭受汙染變更) |
| 記憶體清理 | 關閉時觸發明確之 Dispose() | 維持現狀即為最佳解(徹底杜絕記憶體洩漏) |
8.3 品保測試項目清單
🧪 單元測試檢查表
- 實體化測試: 表單是否能在不拋出例外錯誤的狀態下成功渲染顯示?
- 文字載入測試: RichTextBox 是否有抓取到正確對應語系的文字資源?
- 按鈕行為測試: 關閉按鈕是否確實觸發其綁定之事件?
- GC 回收測試: 當表單關閉後,父層的垃圾回收器 (GC) 是否有成功清空表單記憶體參照?
- 溢位排版測試: 當高 DPI 縮放導致文字折行時,捲軸是否有正確出現?
8.4 版本控制規範
' 於類別標頭強制記錄版本異動 ' Version 1.0.0 - 2025/01/XX - 初始正式版發行 ' Version 1.0.1 - 2025/XX/XX - 文案微調 ' Version 1.1.0 - 2025/XX/XX - 新增 PDF 匯出功能 Public Class T3_1_手計算方法F Private Const VERSION As String = "1.0.0" ' ... 類別邏輯實作 ... End Class
8.5 文件維護方針
- 內聯 XML 註解: 大量使用 ''' XML 註解以便於 IntelliSense 自動生成文件。
- 外部說明檔: 確保本 HTML 操作手冊與程式碼之變更保持同步更新。
- 異動日誌: 維護一份獨立的 Markdown 或文字檔 Changelog 記錄異動。
- 終端使用者手冊: 萃取本手冊非技術性之段落,編纂成作業員專用之快速指引。
9. 總結
🎓 T3_1_手計算方法.vb 之核心特質
- 極致純粹之優雅: 僅依賴單一事件處理程序,幾乎不產生任何技術債 (Technical Debt)。
- 強大之教育價值: 將生硬的數學算式,完美融入現實世界之工程限制與考量中。
- 專注使用者體驗 (UX): 碩大醒目的粗體字型,確保傳遞之訊息能被輕易閱讀與記憶。
- 高擴充彈性: 極簡的骨幹結構,使其未來能輕易掛載如 PDF、列印或影像顯示等新擴充功能。
9.1 技術亮點彙整
📌 類別結構
直接繼承基礎 Form 類別,維持最輕量化之記憶體佔用。
📌 資源解耦
將文字抽離至 .resx 資源檔,實現了文案與核心邏輯之徹底解耦。
📌 事件驅動
嚴謹遵守 WinForms 之事件迴圈 (Event Loop) 標準模型。
📌 人體工學設計
色彩與字型縮放比例之選擇,充分照顧長時間操作人員之視覺疲勞問題。
9.2 給未來維護者之忠告
💡 維護作業準則
- 絕不可將文字更新寫死於 VB 檔案中,務必透過 Resource Editor 進行修改。
- 嚴禁手動竄改
.Designer.vb檔案;請全權交由 Visual Studio 自行管理。 - 新增控制項時請使用滑鼠拖曳設計工具,以防破壞高 DPI 螢幕之縮放比例。
- 程式碼更新後,務必重新編譯並驗證強制互動 (Modal) 阻擋機制是否依舊正常運作。
- 所有的修改請透過 Git 或 SVN 進行線性且附帶註解之提交 (Commit)。
9.3 參考文獻庫
| 資源名稱 | 參考脈絡 |
|---|---|
| Microsoft Docs - Windows Forms | .NET 框架之官方標準文件 |
| VB.NET 語言參考手冊 | 語法與關鍵字查閱 |
| TeraCalc3_Utility 系統綜合手冊 | 確認本模組在系統總體架構中之定位 |
| 物流設施設計基準準則 | 本手冊內文教學內容之工程理論基礎 |