解析大型.NET ERP系統 靈活復雜的界面控件Infragistics WinForms


Infragistics 是.NET平台優秀的控件供應商,囊括了WinForms,ASP.NET,Silverlight,WPF,Windows Phone等所有關於微軟.NET技術的界面控件。借助於這些功能復雜的控件,為ERP的界面提供了靈活的操作能力。

本篇不談控件開發,只詳細說明ERP系統如何使用Infragistics WinForms,而不用.NET 自帶的控件。

1  文本編輯控件提示必須輸入值

如果一個文本編輯控件必須輸入值,有許多實現方法可以借鑒。看金蝶ERP的實現,在文本標簽控件位置處用星號標識。

image

如果用Infragistics WinForms的TextEditor,可實現如下的效果:

image

對於必須輸入值的文本編輯控件,控件末尾有一個星號圖片標識。如果這個編輯控件有值,則圖標消失。

image

只需要一行代碼,Infragistics WinForms可實現這個效果。

txtCustomerNo.Appearance.Image = Properties.Resources.Required_Field_16;


2  控件的數據查找窗體

繼續比較金蝶界面,還是用上面的那張模擬BOM的圖片,工藝路線和計量單位文本編輯控件后面有一個小圖標,表示點這個圖標,可彈出一個數據查找窗體,這樣方便用戶錄入數據。

ERP系統也有類似的實現,先看界面效果圖,注意左邊第一個控件Ccy貨幣輸入控件,它后面有一個小按鈕。

image

當鼠標離開時,Ccy控件后面的小按鈕自動消失。為了實現這個特性,也只需要一行代碼:

EditorButton button = new EditorButton("lookup");
button.Text = "...";
txtCcy.ButtonsRight.Add(button);

 

3  控件支持鑽取

鑽取這個詞的含義來源於報表中,主表點擊事件鑽取到子表明細記錄。ERP中也吸取了這個思想,可以給控件設定要鑽取的功能。比如上圖中的貨幣Ccy,銷售員Salesman,點擊文本編輯控件中值,可打開相應的主檔功能,查看詳細信息。

4  Grid控件支持過濾,排序,分組,字段選取,查找,列順序重排列,導出Excel

以圖為例子,參考銷售訂單明細中的網格控件。

image

Code Project中有幾篇文章,是專門講解通過重寫微軟的DataGridView控件,如何具備以上列出的特性。
Infragistics WinForms已經內置了以上特性,而且支持屬性序列化。比如上圖中列的順序是Line No,Item No

我可以將Item No拖動到Line No列的前面,在窗體關閉時,保存這個順序,下次打開窗體時讀取字段順序值,恢復成用戶設定的順序。能夠保存用戶偏號(Profile)是系統友好的一個主要方面。

5 日期時間控件DateTimePicker 支持空值

.NET WinForms自帶的日期時間控件不支持空日期時間值,這里的空值不是指類型DataTime?。當打開用戶界面創建新的單據時,如果日期控件沒有任何設定值動件,日期控件將返回空時間值,也就是保持NULL值。

6 按鈕Button控件支持圖片

參考下面的報表打印按鈕,它可以顯示一個打印的小圖標。Delphi很多年前就具備這個特性。

image

7 控件支持屬性序列化

窗體中對控件的布局Layout的修改,可以保存到數據庫或存儲介質中,當再次加載控件時,可以恢復成上次用戶修改的布局樣式(Layout)。這個特性,在Grid,TreeView控件有很重要的作用。

在窗體關閉前,讀取控件的屬性,保存到數據庫中,讀取屬性值:

values.Add(new ComponentPropertyValue("AllowRowSummaries", true));

界面加載時,根據數據庫中的記錄設置控件屬性:

if (values.ContainsKey("AllowRowSummaries") && Convert.ToBoolean(values["AllowRowSummaries"].Value))
{
      current.AllowRowSummaries = AllowRowSummaries.True;
}

把上面兩段代碼,分別放到窗體加載和關閉事件中,可參考下面的程序代碼,實際保存用戶偏號。

protected override void OnLoad(EventArgs e)
{
    LoadFormProfile();
}

protected override void OnClosed(EventArgs e)
{
    SaveFormProfile();
}


8  控件增加上下文菜單

文本編輯類控件,內置標准的剪切復制粘貼功能,還應該增加這三個編輯功能的上下文菜單。

image

日期時間控件,也支持剪切復制粘貼功能。

image

 

9 控件的Tab Index順序要預先設置好,Enter鍵可以當Tab鍵使用

ERP界面大部分控件是單行文本輸入,可以考慮給編輯控件重寫鍵盤事件,按Enter鍵可切換到下一個Tab Index控件。

protected override void OnKeyDown(KeyEventArgs e)
{
      if (!base.DesignMode)
       {
              if ((!e.Alt && !e.Control) && !e.Shift)
              {
                    if (e.KeyCode == Keys.Enter)
                    {
                            SendKeys.Send("{TAB}");
                            e.Handled = true;
                     }
 

這個特性在Grid控件中非常有用,回車后直接跳到下一個單元格(Cell),最后一個單元格后再按回車鍵,可跳到下一行。

10  可折疊式組合框 Expandable Groupbox

上面的截圖中用Groupbox將特性相近的控件包括起來,這是界面設計中很友好的一種表達方式。如果窗體的空間位置不夠,或是控件的值僅僅用於參考,可以考慮用UltraExpandableGroupBox,它的模樣參考下面的界面例子。

image

UltraExpandableGroupBox左上角有一個可折疊或展表的符號,可節省屏幕空間。

11 Grid控件支持打印預覽和打印

Grid控件內置了打印功能,參考下圖,在數據查詢類功能中有很重要的作用。

image

Infragistics控件的設計人員設計這個打印功能,考慮了環保方面的要求(節省紙張和墨水)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM