星期二, 5月 30, 2023

[SQL] 案例觀點

在網路上發現該篇文章 - Find 40 Problems in this SQL Server Stored Procedure,這標題還頗有吸引力,要在一隻 Store Procedure 內找出 40 個問題,該篇是個人看完該 Store Procedure 後的心得筆記

文章範例是以 AdventrueWorks 當成範例,之前完全沒用過 Production.ProductSubCategory Table,把相關 Table ER 圖拉出來了解各 Table 關係
[SQL] 案例觀點-ER 圖

範例 Store Procedure 商業邏輯是要找出滿足下列條件的客戶 Email,分別為
  • 一年前有採購過,但後來都沒有採購紀錄的客戶
  • 近一年採購次數超過 (含) 三次以上的客戶
  • 過去兩周內有採購指定類別的客戶
該 Store Procedure 請至文章內查詢,以下是個人想法

星期三, 5月 17, 2023

[Google] 切換語言

處理公司內的 workspace,想要切換成英文來看,一時之間還真的找不到切換語言位置,還得去 Google,Orz

點擊右上方頭像並選擇 [管理你的 Google 帳戶]

[Google] 切換語言-1

個人資訊 => 網頁版的一般偏好設定 => 語言

[Google] 切換語言-2

星期四, 5月 11, 2023

GodexG530-標籤紙自動偵測與定位

接到現場人員來電,告知 G530 換完標籤後,標籤連續列印後就會跑版,導致要一直按 Feed 鍵來輸出,當下直覺是要重新偵測紙張,步驟分別為
  • 關閉電源
  • 按住 Feed 鍵後開啟電源
  • Status 指示燈閃紅燈後放開 Feed 鍵進行偵測
  • 標籤機出紙即表示完成自動偵測和定位,最後會印出一張自我檢測頁
完成上述步驟後,標籤連續列印即恢復正常

影片是 Godex 官方說明

星期六, 5月 06, 2023

[C#] ToolboxItemAttribute

在 [C#] TitlePanel 內,因為 UCContentPanel 是一個專屬於 UCPanel 的專屬自訂控件,嚴格來說無法單獨使用,但在設計階段工具箱內,卻可以使用它,如下圖

[C#] ToolboxItemAttribute

要避免 UCContentPanel 出現在工具箱內,可以透過設定 ToolboxItemAttribute 來達成
namespace UCPanelSample
{
    [ToolboxItem(false)]
    public class UCContentPanel : Panel
    {

    }
}

星期五, 5月 05, 2023

[C#] TitlePanel

該 GitHub 範例 - Enable Child Control Designer 筆記,該自訂控件效果如下,只弄了從工具箱至 UserControl 的效果,作者 repo 內還有一張從 Form 拖曳進 UserControl 的示意圖喔


自訂控件內控件階層顯示如下圖,UserControl 內有兩個 Panel (TitlePanel 和 ContentPanel),TitlePanel 內再放一個 Label (TitleLabel) 控件,最後透過 Dock 設定讓控件大小可以隨著 UserControl 變化,各子控件 Dock 設定
  • TitlePanel:Dock.Top
  • ContentPanel:Dock.Fill
  • TitleLabel:Dock.Fill
[C#] TitlePanel-2

核心功能為使用者在設計階段只能把控件拖曳進 ContentPanel 內、TitlePanel 是無法放控件

該範例整體設計觀念在於 UserControl 無法拖曳控件進入,但是在 UserControlDesigner 內針對子控件去啟用 [設計階段可以拖曳控件進入],以下就用 Code 方式來記錄,部分使用 Code 來達到的效果,會改寫順道驗證看看理解是否正確,筆記重點拆分為
  • ContentPanel 和 ContentPanelDesigner
  • UCPanel 和 UCPanalDesigner

星期四, 5月 04, 2023

[VS] 文件大綱

文件大綱可以顯示 Form 內階層和控件,開啟路徑為 檢視 => 其他視窗 => 文件大綱

[VS] 文件大綱-2

WinForm 控件顯示效果如下

[VS] 文件大綱-1

星期三, 5月 03, 2023

[C#] DockingAttribute

使用 DockingAttribute 來指定控件 Docking 預設值,DockingBehavior 有三個選項,如下表

Fields說明
AskPrompt the user for the desired docking behavior.
AutoDockSet the control's Dock property to Fill when it is dropped into a container with no other child controls.
NeverDo not prompt the user for the desired docking behavior.

DockingAttribute 效果即為智能標籤上的 [停駐於父容器中] 下圖紅框
  • DockingBehavior.Ask 時,預設是 Dock.None,可以透過該選項變化為 Dock.Fill
  • DockingBehavior.Never 時,不會出現下圖紅框選項
  • DockingBehavior.AutoDock 時,當該容器內沒有任何控件時會自動 Dock.Fill,有控件時是 Dock.None
[C#] DockingAttribute

WinForm 標準控件內
  • DataGridView 預設值:DockingBehavior.Ask
  • SplitContainer 預設值:DockingBehavior.AutoDock

以自訂 DataGridView 為例,來設定 DockingAttribute 的話,Code 如下
namespace UCDockingBehavior
{
    [Docking(DockingBehavior.Never)]
    public class UCDataGridViewNever : DataGridView
    {

    }
}