2011年11月23日 星期三

@CASE 11 < 厚度測量 > ver-111124

'需要加入製令選取方塊,
判斷要轉檔列印那些製令內容

目前不做 Threading.ThreadPool 多執行緒轉檔


'轉檔分頁數去印,應該也是放在一個檔案
把基本格式透過判斷去寫
判斷需不需要再多寫一個A4列印區塊

'轉檔用For,格式分開Cell寫就慢
@XLS格式盡量整個區塊一次設定好,

'平衡度是應該與厚度拆開看還是怎樣

'轉檔列印
1.依照製令分類
2.選取製令號
3.目前傾向先不要列印 key in 或是變化歷程資訊
4.要想一下寬度要塞幾筆資料,一頁要分幾段
5.時間切割 日期,時間
                      改欄位放橫,資料每筆放成直的
                        '******************
                        '1.先知道資料筆數 + 1 為建立的column數 (要考慮A4寬度向下分段印)
                        '2.邊建立rowsHeader,邊寫入內容
                        '3.製令製令  XXX (製令只抓一次,只寫入內容一次)
                        '  工號     A034 (以下看資料筆數)
                        '  機台      1-1
                        '  量測時間  MMM
                        '  一次測量  1.1
                        '  平均厚度  1.1
                        '最大厚度差距 1.1
                        '******************
有點難串
不然就直接table寫入Excel


先按照T2表列印
8:00~22:00
每15分量測
目前 13 * 2 一張上下分段
最多會到14 * 4

@目前12*5 A4紙張可以塞入 5個段落
   1個段落3個小時的量測資料

'可能需要
 1.作業溫度欄位
 2.上下比重
 3.故障:原因,時間
 4.閱覽簽章欄位
==================================
'需要加入查詢厚度量測資料介面

'**************************
'透過製令,機台,日期搜尋所有量測
'可能需要額外查詢相關欄位的歷史資料 (ValChange)
'顯示欄位,Key In 與 Scand 的 Style 不同
'凸顯 異常資料 (超過標準厚度)
'透過功號顯示員工資料
'透過製令顯示量測料號
'目前先以Server資料查詢,Client要再想想需不需要
'**************************

'目前查詢不走DSN,走SQL Client

'分三個view
 1. 大範圍的製令號 view
 2. 某筆製令的所有量測內容
 3. 某欄位的相關歷史資料內容

'要想一下怎麼凸顯異常資料 (選取製令繪製製令細項時)
key in 與 scand 差別,

感覺如果要改 特定cell 的Border樣式
一定要自訂控制項,去改寫 DataGridViewAdvancedBorderStyle 自訂外框


不然好像只能透過 CellBorderStyle 去做通用外框設定

DataGridViewAdvancedBorderStyle 類別



DataGridView自訂繪圖之CellPainting事件


其實我要只是換Cell的背景顏色,繪圖的工作與layout工作全部不變一樣交與DataGridView做就好了。 
在試了多次後,其實只要觸發DataGridView.CellPainting事件就能滿足本人的須求。


'在選取狀態應該維持凸顯風格

動態設定 DataGridView 儲存格背景顏色的問題


==========================================================
'應該加入工號防呆,加入製令防呆
檢查是否存在該工號,製令
(先不做)

'應該修正加入資料的時候,去除多餘的空白

'****************
'目前測試厚度為百位到小數點下兩位
'不足部分補0
'擋掉 + 號
'滑鼠點擊,得到焦點,將全選Box內容
'失去焦點後,判斷是否4個厚度皆有資料,然後計算
'應該以小數點下四位計算(兩種厚度機,2位,4位)
'加入製令下砂輪標準厚度,判斷每次量測的是否在標準內,並醒目提示
'****************

@ '±'  ASCII : 241


==========================================================

'可能製令判斷key in 的部分有點問題
有時候一開始輸入scand 會判讀為 key in



'可能需要透過主程式來開啟Scand程式
先這樣
=========================================================
'加入 Scand介面鎖定功能 (一定要先啟動Scand,再啟動主程式)

'需要寫入上傳Server功能

1.寫入Client
2.判斷server是否可連接
   true: 1.複製 Client Table所有資料到 Server
          2.清空Client Table
          (一筆一筆上傳,commit後才清空)
  false: 不做上傳,清空動作

'目前測試在WriteFromTable之下
如果加入 Transaction 會出錯
先拿掉, Transaction 配上 DataAdapter.Update(DataTable)



'目前專案改以 Frame Work 2.0
所以相關載入組件,也要在 2.0環境下執行編譯

改了以後一堆東西不能用
先看到時候執行環境怎樣在修改好了


'厚度
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.>50, <=50且不含"+" -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.<=50且含"+" ->Scand
            '      b.其他 -> key in
            '********************************

'製令
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.>400, =0 -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.<=400, <>0 -> Scand
            '      b.其他 -> key in
            '********************************




=======================================================

'需要紀錄每次變動
目前設長度100
尚未做長度限定防呆

'每次存檔送出,將 TextBox 自訂屬性初始化
 單純清空將不做初始

'檢查所有欄位非空值,存檔


'鎖住複製貼上動作



vb TextBox 禁止复制http://zhidao.baidu.com/question/63400211.html



'紀錄最後是否Key In


'將 TextBox 加入三個屬性
一個紀錄原始資料
一個紀錄顯示資料
一個紀錄是否KeyIn


每次離開焦點,判斷顯示資料是否改變


       If Not Decimal.TryParse(sender.Text, Nothing) Then
            sender.focus()
            Exit Sub
        End If

        '暫存數值與新輸入不同
        If sender.valuetmp <> sender.text Then
            '記憶數值有變化
            sender.valuechange = True
            '抓住暫存資料數值
            'sender.valuetmp = sender.text
            sender.valuetmp = If(sender.text = "", "", String.Format("{0:#,0.00}", Decimal.Parse(sender.text)))


            '± ASCI 241

            ''抓儲存前原始數值
            ''判斷是否有 "+"
            ''true = 掃描,false = key in

            '判斷輸入完成後時間
            'stopWatch.Stop()
            '標準時間設置 50ms, 判斷以內為掃描
            sender.tick.stop()
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.有更改,不含"+" -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.有更改,含"+" ->Scand
            '      b.其他 -> key in
            '********************************

            If sender.iskeyin Then
                'key in 手動跳行
                '資料數值有更改
                If sender.tick.ElapsedMilliseconds <= 50 _
                    And sender.Text.Contains("+") Then
                    '以 scand 修改
                    sender.iskeyin = False

                End If
            Else
                'Scand 自動跳行
                '資料數值有更改
                If sender.tick.ElapsedMilliseconds > 50 Then _
                    'And Not sender.Text.Contains("+") Then
                    '以 key in 修改
                    sender.iskeyin = True

                ElseIf sender.tick.ElapsedMilliseconds <= 50 _
                And Not sender.Text.Contains("+") Then
                    '以 key in 修改 (輸入快,但是不包含"+")
                    sender.iskeyin = True
                End If
            End If


            sender.tick.Reset()






'可能需要一些輸入防呆
最好是能做到判斷輸入裝置




 C# >> HID裝置抓值判斷問題
http://webcache.googleusercontent.com/search?q=cache:3pXAGZOL8mMJ:www.blueshop.com.tw/board/FUM20050124192253INM/BRD201012062050227KX.html+VB+%E5%88%A4%E6%96%B7+HID&cd=4&hl=zh-TW&ct=clnk&gl=tw

How to detect USB devices, mouse, keyboard (HID) using C#








/*
GUID_DEVCLASS_FDC軟盤控制器
GUID_DEVCLASS_DISPLAY顯示卡


GUID_DEVCLASS_CDROM光驅


GUID_DEVCLASS_KEYBOARD鍵盤


GUID_DEVCLASS_COMPUTER計算機


GUID_DEVCLASS_SYSTEM系統


GUID_DEVCLASS_DISKDRIVE磁盤驅動器


GUID_DEVCLASS_MEDIA聲音、視頻和遊戲控制器


GUID_DEVCLASS_MODEMMODEM


GUID_DEVCLASS_MOUSE鼠标和其他指針設備


GUID_DEVCLASS_NET網絡設備器


GUID_DEVCLASS_USB通用串行總線控制器


GUID_DEVCLASS_FLOPPYDISK軟盤驅動器


GUID_DEVCLASS_UNKNOWN未知設備


GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器


GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器


GUID_DEVCLASS_PORTS端口(COM 和 LPT)


GUID_DEVCLASS_MONITOR監視器


========================================================
'需要納入每個產品的標準厚度,
tblStock  XF, isnotvalid <> 1
PartSpecD 標準重量
PartSpecE 標準厚度

'製令輸入後
撈出製令生產料號 text4
text15 製成
text4 生產料號
text7 製令

'合理範圍,維持原本style
 超出範圍,改變背景以及文字色調

'生產機台不一定按照製令排的機台走

沒有留言:

張貼留言