2009年3月27日 星期五

[AutoHotKey] 按下熱鍵開啟連發,再按一次熱鍵 停止連發

;看得懂得人就看吧。
;--------------------------------以下開始------------------------------

#Persistent
#NoEnv

v_Enable=0
UpdateSplashImage()
{
Global
if(v_Enable=0)
{
SplashImage,,X10 Y10 H24 W36 CWFF0000 CT000000 ZX5 ZY5 B2 FS9 WS700, NO
return
}
else
{
SplashImage,,X10 Y10 H24 W36 CW00FF00 CT000000 ZX5 ZY5 B2 FS9 WS700, OK
}
}

$`::
{
v_Enable:=!v_Enable
If (v_Enable=0)
{
SetTimer, Label0, Off
UpdateSplashImage()
}
else
{
SetTimer, Label0, 100
UpdateSplashImage()
}
}
Return

Label0:
{
SendRaw, {F5}
}

2009年3月24日 星期二

[C#] 我犯了沒看書的錯..全域變數

 我寫程式喜歡把所有東西都包在 Button 裡面,可是當不同的 Button 需要用到相同的變數時

 是個很大的困擾。。。



 竟然發現要把變數放在 ..

 public partial class Form1 : Form
    {
        DataTable dt;   <----------  OK
       
        public Form1()
        {
            InitializeComponent();
            DataTable dt2; <----------NG
        }

..  太高興了

2009年3月17日 星期二

[C#] IF內部的變數,如果外部要使用的時候 小技巧(書裡面沒教的)

原本

                           
                            if (result.Rows.Count == 0)
                            {

                             km.SQLExecute("INSERT INTO MGMES.dbo.PACKAGE_SN_FILL() VALUE () ");
                            }
                            else
                            {
                                 String show5_4_1 = result.Rows[0].ItemArray[0].ToString();
                               
                            }
                          
                            string show5_4_1_ADD1 = show5_4_1.Substring(1, 5); //這時候 show_5_4_1 不能使用




改成



                            string show5_4_1="";
                           
                            if (result.Rows.Count == 0)
                            {

                                km.SQLExecute("INSERT INTO MGMES.dbo.PACKAGE_SN_FILL() VALUE () ");
                            }
                            else
                            {
                                 show5_4_1 = result.Rows[0].ItemArray[0].ToString();
                               
                            }
                          
                            string show5_4_1_ADD1 = show5_4_1.Substring(1, 5); //可以使用了

2009年3月16日 星期一

[C#] 做流水號時,不滿位數補零(0)

在寫產生流水號的時候,需求是 9 Char 位數。

 可是資料不滿的時候要怎麼來補滿呢?


  string show4_5 = string.Format("{0,1:000000000}",int.Parse(PLT_QTY_FIRST)); //數量不滿 9 位數時,前面補 0

  //很多 0 那裡是指定總位數是多少。 
  //後面的 PLT_QTY_FIRST 是指原本的變數 ,就是原本的水號。

  結果:
  初值 PLT_QTY_FIRST = 999
   
  show4_5 = 000000999

...

  太機車。。。 竟然有更簡單的

  int.Parse(PLT_QTY_FIRST).ToString("000000000");

 


[C#] DateTimePicker 指定表示格式的方法

爬文看了一堆,沒想到最後試出來  是那麼簡單。。
 

  //這是改變顯示於 螢幕上 的部份
  public Form1()
        {
            InitializeComponent();
        
            dateTimePicker1.CustomFormat = "yyyy-MM-dd";

        }


 當選取日期變更以後,要得到變更後 的值:

 string PLT_DATE_FIRST= this.dateTimePicker1.Text; //把變更後的 Data 放到 PLT_DATE_FIRST 變數內容裡面



C# 檢查是否為數字 或 字串

 可以用在 Textbox 上來檢查 使用者 輸入的時候 是  純文字  或  純數字


   public bool CheckIsNumber(string s)
        {
            char[] tmp = s.ToCharArray();
            for (int i = 0; i < tmp.Length; i++)
            {
                if ((int)tmp[i] < 48 || (int)tmp[i] > 57)
                    return false;

            }
            return true;
        }


                 實做:

                   if (CheckIsNumber(textBox2.Text) == true)
                  
                       {
                            MessageBox.Show("你輸入的是 純數字");


                        }
                        else
                        {
                            MessageBox.Show("請輸入 數字!!");
                       
                        }

C# 內崁資源圖檔開啟 (Part 2)

之前 有PO過 爬文爬到的 圖檔開啟方式。。

但是用了以後覺得挺麻煩的。。


試了一下,發現有更快的方式。


Step1:  拉個 pictureBox1 控件進來 From

Step2:  點選 pictureBox1 控件,去屬性裡面找 Image 的地方,進去以後
            直接加入要 Show 的圖檔。

Step3: ok 搞定。

         
     很快吧!!

C# ASP.NET 竟然沒有全域變數可以使用

寫到一半,突然發現 Web 模式下 我竟然沒有 全域變數 可以使用。

這樣子在寫程式過程 真的是很不方便。。。

網頁上 每按一個 Button 等同於 程式重跑一次。。。  那我的常數怎麼辦?


爬了一下文,可以用 Session 來作..




 protected void Page_Load(object sender, EventArgs e)
    {

        if (Session.Count != 0)  //判斷Session 不是 0, 才開始使用 Session
        {
            TextBox4.Text = (String)Session["QQQ"].ToString();
        }
     
    }


實做部份

 Session["QQQ"] = "123";


這樣子常數就記得了。



C# ASP.NET 與MessageBox.Show 的相同用法

開始寫 Web From 以後發現,MessageBox.Show 竟然不能使用了。。。


爬文找到了。。


Response.Write("<script>alert('你輸入的料號長度不對,請確認有包涵『.』料號!')</script>");


2009年3月5日 星期四

C# Int String 互轉換方式

  簡單的String轉換用 ToString()方法  
  複雜的用System.Convert.ToString()  
 
  簡單的int轉換用int.Parse(xxxxxxxxxxxxxx)  
  複雜的用System.Convert.ToIntXX()

 

2009年3月4日 星期三

C# Substring 使用(徹底解決 擷取字串長度不足的問題)

如標題,加入下列原始碼

                    使用方法:
                    string strDD = textBox7.Text;   //來源資料
                    string qty = SubString(strdate, 0, 5); //擷取第一段
                    string lotno = SubString(strdate, 5, 100); //因為不知道總長度多少,所以設多一點
                   
                    listBox2.Items.Add(qty);
                    listBox2.Items.Add(lotno);





原始碼:

  public static string SubString(string strDD, int startIndex, int length) //解決字串擷取超過範圍的問題(新類別)
        {
            int intLen = strDD.Length;
            int intSubLen = intLen - startIndex;
            string strReturn;

            if (length == 0)
                strReturn = "";
            else
            {
                if (intLen <= startIndex)
                    strReturn = "";
                else
                {
                    if (length > intSubLen)
                        length = intSubLen;

                    strReturn = strDD.Substring(startIndex, length);
                }
            }
            return strReturn;
        }

C# Substring 使用(以 空白格 為條件,拆成一行一行)

Substring 使用(以 空白格 為條件,拆成一行一行)


 char[] delimit = new char[] { ' ' };
 string s10 = textBox7.Text;
 foreach (string substr in s10.Split(delimit))
   {
   listBox2.Items.Add(substr);
   }

2009年3月3日 星期二

C# Tabcontrol 的秘密!

通常我們會在 Tabcontrol 這個控件裡面 做一些事情,當然 少不了輸入(Key in 或 用 barcode reader)一些資料

問題來了,當我點選 tabpage 的時候,要能自動 把 Focus 放在 textbox 裡面,方便開始作業。


不是在 Page 事件裡面,反而是在 Control 的事件裡

 
private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e)
        {
            switch (this.tabControl1.SelectedIndex)
            {
                case 0:
                    textBox1.Focus();
                    break;
                case 1:
                    textBox5.Focus();
                    break;
                  
            }
        }


以上

我們的 TEAM ,被迫改名。。

話說 今日上午 跟大老闆開早會,說到我們小組名稱  BCS - Barcode System

他說太 Low了  -___-||||||

要我們改名字,還幫我們想好了新名字 FMES -  Fxxxx Manufacuring Execution System

簡單來說就是 製造執行系統。

現在困擾的是,我的 Logo 要做成怎麼樣?  有人會做 Logo 嗎?

C# Split 的使用

 
網路上爬文爬很多,但是用起來卻是有點問題。。。疑惑

自己試了一下,這麼做是可以用的。



 if (aa.StartsWith("0,") == true)  //我先判斷變數里面的內容,如果 資料開頭以 [0,]起始,才開始做
                {
                    string qqqq = aa.Split(',')[5].ToString();  //以[,]為區隔,取第五個[,]以後的資料。
                    string qqqq1 = aa.Split(',')[8].ToLower();
                    listBox1.Items.Add(qqqq+"      "+qqqq1);
              
                }