alankam58 Posted November 2, 2023 Share Posted November 2, 2023 To all Professional developer, hope someone can help me on this issues. i developed GUI where it will load some program/function from VBscript (with MSScriptcontrol), it run normally at start without any issues. but after few run all the ctrl disappear. attached the GUI below, can someone help advice? what are the issues Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 2, 2023 Moderators Share Posted November 2, 2023 alankam58, This is an AutoIt forum - is the GUI coded in AutoIt? If so, then please post the code (see here how to do it) so we can take a look. If not, then I suggest you seek help elsewhere. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
alankam58 Posted November 2, 2023 Author Share Posted November 2, 2023 3 hours ago, Melba23 said: alankam58, This is an AutoIt forum - is the GUI coded in AutoIt? If so, then please post the code (see here how to do it) so we can take a look. If not, then I suggest you seek help elsewhere. M23 yes, it is coded with AutoIT Link to comment Share on other sites More sharing options...
alankam58 Posted November 2, 2023 Author Share Posted November 2, 2023 (edited) expandcollapse popup#include <GUIConstantsEx.au3> #include <GuiMenu.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> #include <Date.au3> #include <StaticConstants.au3> #include <GuiToolbar.au3> #include <ColorConstantS.au3> #include <ButtonConstants.au3> #include <FontConstants.au3> #include <GuiTab.au3> #include <Debug.au3> #include <ListViewConstants.au3> #include <MsgBoxConstants.au3> #include <FileConstants.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <File.au3> #include <GuiToolTip.au3> #include <WinAPIConstants.au3> #include <GuiListView.au3> #include <ColorConstants.au3> #include <StructureConstants.au3> #include <WinAPI.au3> #include <StringConstants.au3> Opt("GUICloseOnESC", 0) Opt("TrayIconHide", 1) ;~ Opt("GUIOnEventMode", 1) #Region -->> Global Control Variable Global $hGUI, $hGUI_2, $hBarcode, $aProductData, $aTestItemData, $hTITable, $aOriTestItemData Global $GetProgramPath Global $FinalResult = 1 ; Set final test result 1=Passed; 0=Failed Global $StopTest = 0 Global $ScriptChange = 0 ; Set default test script no change Global $EditVBsPID, $VBsFileBefore, $VBsFileAfter Global $aBarcodeSN[2][2] $aBarcodeSN[0][0] = "Barcode" $aBarcodeSN[0][1] = "Result" $aBarcodeSN[1][0] = "DummyCode" $aBarcodeSN[1][1] = "Passed" ;Use for Barcode Scanning GUI Global $FF_ESC_Exit = 0 Global $ibOK Global $ScriptEditting = @ScriptDir & "\Notepad++\notepad++.exe" Global $EditPID Global $StartTestTime, $EndTestTime ;-->> GUI Size Setting Local $g_Main[2] = [1024, 768] ;Restore/Standard Win Size ;~ Local $sFont = "Courier New" #EndRegion #Region -->> Menu Control Variable Dim $MenuFile[7] Dim $MenuEdit[8] Dim $MenuRun[6] Dim $MenuOpt[8] Dim $MenuHelp[2] #EndRegion #Region -->> Toolbar Button Dim $ToolsBtn[15] #EndRegion #Region -->> Program ListView Dim $ProgTab[3] Global $ListViewTbl Global Enum $idSubInsert=1000, $idSubDelete, $idSubClear, $idSubCut, $idSubCopy, $idSubPaste Global $aGetData[1] Global $lvParam, $hFont, $defColLV = 0x000000, $defBkColLV = 0xFFFFFF Global $hListView Dim $aLV1[1][20][5] Global Const $INDEXSHIFT = 9999 ; need to avoid complications with other (lower) Control-ID Global $ahWndSets[1][2] #EndRegion #Region -->> Status Edit Local $StatusEdit #EndRegion #Region -->> Status & Date/Time Global $Status[3] #EndRegion #Region -->> GUI Tab Dim $GUITab[4] ; General Information Tab Dim $InfoTab[21] Global $ProgramInfo = 0 ; UUT/Barcode Input Box Local $SNNo = 10 ;Dummy number of Barcode DIM $iBarcode[$SNNo] ;_DebugArrayDisplay($rUUTNo) ; Clear all SN Local $btnSNClear ; Lable Font and Color ;~ $FontColor = 0xFFFFFF ;~ $GroupColor = 0xFFFFFF #EndRegion #Region -->> Icon Path Dim $ToolsIco[27] ;Icon file path $ToolsIco[1] = @ScriptDir&"\Image\ToolsBar\New.ico" $ToolsIco[2] = @ScriptDir&"\Image\ToolsBar\Open.ico" $ToolsIco[3] = @ScriptDir&"\Image\ToolsBar\Save.ico" $ToolsIco[4] = @ScriptDir&"\Image\ToolsBar\Close.ico" $ToolsIco[5] = @ScriptDir&"\Image\ToolsBar\EditVBs.ico" $ToolsIco[6] = @ScriptDir&"\Image\ToolsBar\Cut.ico" $ToolsIco[7] = @ScriptDir&"\Image\ToolsBar\Copy.ico" $ToolsIco[8] = @ScriptDir&"\Image\ToolsBar\Paste.ico" $ToolsIco[9] = @ScriptDir&"\Image\ToolsBar\Delete.ico" $ToolsIco[10] = @ScriptDir&"\Image\ToolsBar\Run.ico" $ToolsIco[11] = @ScriptDir&"\Image\ToolsBar\Step.ico" $ToolsIco[12] = @ScriptDir&"\Image\ToolsBar\Stop.ico" $ToolsIco[13] = @ScriptDir&"\Image\ToolsBar\Exit.ico" $ToolsIco[14] = @ScriptDir&"\Image\ToolsBar\New_g.ico" $ToolsIco[15] = @ScriptDir&"\Image\ToolsBar\Open_g.ico" $ToolsIco[16] = @ScriptDir&"\Image\ToolsBar\Save_g.ico" $ToolsIco[17] = @ScriptDir&"\Image\ToolsBar\Close_g.ico" $ToolsIco[18] = @ScriptDir&"\Image\ToolsBar\EditVBs_g.ico" $ToolsIco[19] = @ScriptDir&"\Image\ToolsBar\Cut_g.ico" $ToolsIco[20] = @ScriptDir&"\Image\ToolsBar\Copy_g.ico" $ToolsIco[21] = @ScriptDir&"\Image\ToolsBar\Paste_g.ico" $ToolsIco[22] = @ScriptDir&"\Image\ToolsBar\Delete_g.ico" $ToolsIco[23] = @ScriptDir&"\Image\ToolsBar\Run_g.ico" $ToolsIco[24] = @ScriptDir&"\Image\ToolsBar\Step_g.ico" $ToolsIco[25] = @ScriptDir&"\Image\ToolsBar\Stop_g.ico" $ToolsIco[26] = @ScriptDir&"\Image\ToolsBar\Exit_g.ico" #EndRegion #Region -->> Function & Sub Variable Global $aFuncSubList, $hAperture, $rFuncSubCombo, $rItemCombo Global $iFuncSub[12] Global $iParam[26][3] #EndRegion #Region -->> Flexflow Variable Global $aFFTestData[1][15][1] = [[["GROUP NAME"], ["DATATYPE"], ["MODULETIME/TOTALTIME"], ["TIMESTAMP"], ["Group STATUS"], ["TEST NAME"], ["DESCRIPTION"], ["UNIT"], ["VALUE"], ["HILIM"], ["LOLIM"], ["STATUS"], ["RULE"], ["TARGET"], ["DATATYPE"]]] ;~ _DebugArrayDisplay($aFFTestData, "$aFFTestData") #EndRegion #Region -->> User include - need to be add after public variable #include "_PublicScript.au3" #include "Login.au3" #include "NewProgram.au3" #include "LoadOldProgram.au3" #include "LoadProgram.au3" #include "_BarcodeInput.au3" #include "xmlCreator.au3" #include "_OptionMenu.au3" #EndRegion $FontColor = 0x000000 $GroupColor = $Blue ;Hotkey HotKeySet("{ESC}", "_CloseBarcode") HotKeySet("{F5}", "_F5Run") HotKeySet("{F7}", "_F7Stop") $rLogin = _Login() Global $flexATSUser = $rLogin[0][0] Global $flexATSAccessRight = $rLogin[0][2] If StringCompare($flexATSUser, -1) <> 0 Then MainPage() Else Exit EndIf Func MainPage() Local $hFile, $hEdit, $hHelp, $hMain Dim $aWinSize $hGUI = GUICreate($GUITitle, $g_Main[0], $g_Main[1], -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU )) ;GUISetBkColor($LightBlue, $hGUI) ;GUISetBkColor($GUI_BKCOLOR_TRANSPARENT , $hGUI) ;GUICtrlCreatePic($BackgroundImage, 0, 0, $g_Main[0], $g_Main[1]) ;GUICtrlSetState(-1, $GUI_DISABLE) ;GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUISetIcon($TitleIcon) ;GUISetState(@SW_MAXIMIZE) #Region -->> GUI Menu ; Create File menu $MenuFile[0] = GUICtrlCreateMenu("&File") $MenuFile[1] = GUICtrlCreateMenuItem("&New", $MenuFile[0]) $MenuFile[2] = GUICtrlCreateMenuItem("Open/Load", $MenuFile[0]) GUICtrlSetState(-1, $GUI_DEFBUTTON) ;$MenuFile[3] = GUICtrlCreateMenuItem("&Close", $MenuFile[0]) $MenuFile[4] = GUICtrlCreateMenuItem("&Save", $MenuFile[0]) $MenuFile[5] = GUICtrlCreateMenuItem("Save As", $MenuFile[0]) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateMenuItem("", $MenuFile[0]) $MenuFile[6] = GUICtrlCreateMenuItem("E&xit", $MenuFile[0]) ;Local $idRecentfilesmenu = GUICtrlCreateMenu("Recent Files", $idFilemenu, 1) ; Create Edit menu $MenuEdit[0] = GUICtrlCreateMenu("&Edit") $MenuEdit[1] = GUICtrlCreateMenuItem("&Undo", $MenuEdit[0]) GUICtrlSetState(-1, $GUI_DISABLE) $MenuEdit[2] = GUICtrlCreateMenuItem("&Redo", $MenuEdit[0]) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateMenuItem("", $MenuEdit[0]) $MenuEdit[3] = GUICtrlCreateMenuItem("&Cut", $MenuEdit[0]) $MenuEdit[4] = GUICtrlCreateMenuItem("C&opy", $MenuEdit[0]) $MenuEdit[5] = GUICtrlCreateMenuItem("&Paste", $MenuEdit[0]) GUICtrlCreateMenuItem("", $MenuEdit[0]) $MenuEdit[6] = GUICtrlCreateMenuItem("&Insert", $MenuEdit[0]) $MenuEdit[7] = GUICtrlCreateMenuItem("&Delete", $MenuEdit[0]) ; Create Run menu $MenuRun[0] = GUICtrlCreateMenu("&Run") $MenuRun[1] = GUICtrlCreateMenuItem("Execute Test", $MenuRun[0]) $MenuRun[2] = GUICtrlCreateMenuItem("Single Test", $MenuRun[0]) $MenuRun[3] = GUICtrlCreateMenuItem("Stop", $MenuRun[0]) GUICtrlCreateMenuItem("", $MenuRun[0]) $MenuRun[4] = GUICtrlCreateMenuItem("Debug Mode", $MenuRun[0]) If $DebugMode = 1 Then GUICtrlSetState($MenuRun[4], $GUI_CHECKED) ; Create Option menu $MenuOpt[0] = GUICtrlCreateMenu("&Option") $MenuOpt[1] = GUICtrlCreateMenuItem("System Configuration", $MenuOpt[0]) GUICtrlCreateMenuItem("", $MenuOpt[0]) $MenuOpt[2] = GUICtrlCreateMenuItem("Extended Code", $MenuOpt[0]) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateMenuItem("", $MenuOpt[0]) $MenuOpt[3] = GUICtrlCreateMenuItem("Convert Old Program", $MenuOpt[0]) ; Create Help menu $MenuHelp[0] = GUICtrlCreateMenu("&Help") $MenuHelp[1] = GUICtrlCreateMenuItem("&About", $MenuHelp[0]) #EndRegion --->> GUI Menu #Region --->>> Toolbar Button GUICtrlCreateGraphic(2, 9, 2, 43, BitOR($SS_NOTIFY,$SS_SUNKEN)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) $ToolsBtn[1] = GUICtrlCreateIcon($ToolsIco[1], "New", 6, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Create New") $ToolsBtn[2] = GUICtrlCreateIcon($ToolsIco[2], "Open", 58, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Open/Load Program") $ToolsBtn[3] = GUICtrlCreateIcon($ToolsIco[3], "Save", 110, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Save") $ToolsBtn[4] = GUICtrlCreateIcon($ToolsIco[4], "Cancel", 162, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Cancel/Restore Changes") ;----------- Saperator GUICtrlCreateGraphic(214, 9, 2, 43, BitOR($SS_NOTIFY,$SS_SUNKEN)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) $ToolsBtn[5] = GUICtrlCreateIcon($ToolsIco[5], "EditVBs", 218, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Edit Test Program") ;----------- Saperator GUICtrlCreateGraphic(270, 9, 2, 43, BitOR($SS_NOTIFY,$SS_SUNKEN)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) $ToolsBtn[6] = GUICtrlCreateIcon($ToolsIco[6], "Cut", 274, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Cut Row") $ToolsBtn[7] = GUICtrlCreateIcon($ToolsIco[7], "Copy", 326, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Copy Row") $ToolsBtn[8] = GUICtrlCreateIcon($ToolsIco[8], "Paste", 378, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Paste Row") $ToolsBtn[9] = GUICtrlCreateIcon($ToolsIco[9], "Delete", 430, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Delete Row") ;----------- Saperator GUICtrlCreateGraphic(482, 9, 2, 43, BitOR($SS_NOTIFY,$SS_SUNKEN)) ;----------- GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) $ToolsBtn[10] = GUICtrlCreateIcon($ToolsIco[10], "Run", 486, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Run Test") $ToolsBtn[11] = GUICtrlCreateIcon($ToolsIco[11], "Step", 538, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Step Test") $ToolsBtn[12] = GUICtrlCreateIcon($ToolsIco[12], "Stop", 590, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Stop Test") ;----------- Saperator GUICtrlCreateGraphic(642, 9, 2, 43, BitOR($SS_NOTIFY,$SS_SUNKEN)) ;----------- GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) $ToolsBtn[13] = GUICtrlCreateIcon($ToolsIco[13], "Exit", 646, 5, 50, 50, BitOR($SS_CENTERIMAGE,$SS_NOTIFY)) GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKSIZE) GUICtrlSetTip(-1, "Exit Program") #EndRegion --->>> Toolbar Button #Region --->> Status Edit ;~ $StatusEdit = GUICtrlCreateEdit("Status Edit:", 345, 510, 670, 210, $ES_AUTOVSCROLL + $ES_AUTOHSCROLL) $StatusEdit = GUICtrlCreateLabel("flexATS", 345, 510, 670, 210, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_SUNKEN)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT + $GUI_DOCKRIGHT) GUICtrlSetFont(-1, 90, $FW_EXTRABOLD, $GUI_FONTNORMAL, "Arial Rounded MT Bold") GUICtrlSetColor(-1, $flexBlue) #EndRegion --->> Status Edit #Region -->> Status & Date/Time ; Create Status control $Status[1] = GUICtrlCreateLabel("flexATS Status Bar...", 2, 722, 862, 25,BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetFont(-1, 9, $FW_MEDIUM, 0, $sFont) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT + $GUI_DOCKRIGHT) GUICtrlSetColor(-1, $FontColor) ;~ GUICtrlSetBkColor(-1, $Blue) ; Create date & time display $Status[2] = GUICtrlCreateLabel("", 866, 722, 150, 25,BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetFont(-1, 9, $FW_MEDIUM, 0, $sFont) GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT + $GUI_DOCKRIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) ;~ GUICtrlSetBkColor(-1, $Blue) GUICtrlSetData($Status[2],_NowCalc()) #EndRegion -->> Status & Date/Time #Region -->> Test Item ListView $ListViewTbl = GUICtrlCreateListView("", 345, 86, 670, 420, BitOR($LVS_DEFAULT, $WS_BORDER, $LVS_REPORT)) GUICtrlSetResizing($ListViewTbl, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT) _GUICtrlListView_SetExtendedListViewStyle($ListViewTbl, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_DOUBLEBUFFER, $LVS_EX_GRIDLINES));, $LVS_EX_TRANSPARENTBKGND)) $hListView = GUICtrlGetHandle($ListViewTbl) _GUICtrlListView_AddColumn($ListViewTbl, "No.", 50, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Execute Function\Sub", 200, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Test Items Name", 220, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Lower Limit", 120, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Upper Limit", 120, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Unit", 50, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Actual", 80, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Test Result", 80, 2) _GUICtrlListView_AddColumn($ListViewTbl, "Retry", 50, 2) ;~ _GUICtrlListView_AddColumn($ListViewTbl, "Fail goto", 70, 2) Global $ItemInsert = GUICtrlCreateDummy() Global $ItemDel = GUICtrlCreateDummy() Global $ItemClear = GUICtrlCreateDummy() Global $ItemCut = GUICtrlCreateDummy() Global $ItemCopy = GUICtrlCreateDummy() Global $ItemPaste = GUICtrlCreateDummy() #EndRegion #Region --->> GUI Info Tab $TopDown = 70 $GUITab[0] = GUICtrlCreateTab(2, 66, 240, 20) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;~ GUICtrlSetBkColor($GUITab[0], 0xDDEBF7) #Region --->>> Information Tab $GUITab[1] = GUICtrlCreateTabitem("General Info") GUICtrlCreateGroup("Product Information", 5, 25+$TopDown, 330, 150) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Product Information", 5, 30+$TopDown, 326, 140, $FontColor, $GroupColor) GUICtrlCreateLabel("Model Name:", 8, 50+$TopDown, 100, 25, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[1] = GUICtrlCreateInput("", 110, 47+$TopDown, 218, 20, BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Model Descp.:", 8, 81+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[2] = GUICtrlCreateInput("", 110, 78+$TopDown, 218, 20, BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Model P/N:", 8, 112+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[3] = GUICtrlCreateInput("", 110, 109+$TopDown, 218, 20, BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Model Revision:", 8, 143+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[4] = GUICtrlCreateInput("", 110, 140+$TopDown, 218, 20, BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateGroup("Test Yield", 5, 185+$TopDown, 330, 150) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Test Yield Information", 5, 190+$TopDown, 326, 140, $FontColor, $GroupColor) GUICtrlCreateLabel("Total Tested:", 8, 210+$TopDown, 100, 25, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[14] = GUICtrlCreateLabel("0", 110, 207+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) ;~ GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Passed Units:", 8, 241+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[15] = GUICtrlCreateLabel("0", 110, 238+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Failed Units:", 8, 272+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[16] = GUICtrlCreateLabel("0", 110, 269+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("First Pass Yield:", 8, 303+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[17] = GUICtrlCreateLabel("0.00%", 110, 300+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetBkColor(-1, $LightRed) GUICtrlCreateGroup("Test Time", 5, 345+$TopDown, 330, 120) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Test Time Infomartion", 5, 350+$TopDown, 326, 110, $FontColor, $GroupColor) GUICtrlCreateLabel("Start Time:", 8, 370+$TopDown, 100, 25, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[18] = GUICtrlCreateLabel("", 110, 367+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("End Time:", 8, 401+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[19] = GUICtrlCreateLabel("", 110, 398+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Total Test Time:", 8, 432+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[20] = GUICtrlCreateLabel("", 110, 429+$TopDown, 218, 20, BitOR($SS_CENTER, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) #EndRegion #Region --->>> Fixture Information Tab $GUITab[2] = GUICtrlCreateTabitem("Test Information") GUICtrlCreateGroup("Product Information", 5, 25+$TopDown, 330, 150) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Fixture Information", 5, 30+$TopDown, 326, 140, $FontColor, $GroupColor) GUICtrlCreateLabel("Fixture ID:", 8, 50+$TopDown, 100, 25, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[5] = GUICtrlCreateInput("", 110, 47+$TopDown, 218, 20, BitOR($SS_LEFT, $SS_SUNKEN, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Fixture Life Cycle:", 8, 81+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[6] = GUICtrlCreateInput("", 110, 78+$TopDown, 218, 20, BitOR($ES_CENTER, $ES_NUMBER)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Current Usages:", 8, 112+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[7] = GUICtrlCreateInput("", 110, 109+$TopDown, 218, 20, BitOR($ES_CENTER, $ES_NUMBER)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel("UUT Qty/Fixture:", 8, 143+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[8] = GUICtrlCreateCombo("", 110, 140+$TopDown, 218, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_DROPDOWNLIST)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetData($InfoTab[8], _UUTNoCombo(), "1") GUICtrlCreateGroup("Station Information", 5, 185+$TopDown, 330, 180) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Station Information", 5, 190+$TopDown, 326, 170, $FontColor, $GroupColor) GUICtrlCreateLabel("Test Station:", 8, 210+$TopDown, 100, 25, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[9] = GUICtrlCreateInput("0", 110, 207+$TopDown, 218, 20) ;~ GUICtrlSetStyle(-1, $ES_READONLY) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Barcode Length:", 8, 241+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[10] = GUICtrlCreateInput("", 110, 238+$TopDown, 218, 20, BitOR($ES_CENTER, $ES_NUMBER)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Barcode Prefix:", 8, 272+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[11] = GUICtrlCreateInput("", 110, 269+$TopDown, 218, 20) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Flexflow Status:", 8, 303+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[12] = GUICtrlCreateLabel("OFF", 110, 300+$TopDown, 80, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $White) GUICtrlSetBkColor(-1, $Red) GUICtrlCreateLabel("Stop At Fail:", 8, 334+$TopDown, 100, 20, $SS_RIGHT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $InfoTab[13] = GUICtrlCreateLabel("OFF", 110, 331+$TopDown, 80, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $White) GUICtrlSetBkColor(-1, $Red) #EndRegion #Region --->>> Edit Test Items $GUITab[3] = GUICtrlCreateTabitem("Edit Test Item") GUICtrlCreateGroup("Station Information", 5, 25+$TopDown, 330, 535) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;_GUICtrlCreateGroup(" Test Item Editting ", 5, 30+$TopDown, 326, 525, $FontColor, $GroupColor) GUICtrlCreateLabel("Test Item No. and Name:", 35, 50+$TopDown, 200, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[1] = GUICtrlCreateCombo("", 30, 65+$TopDown, 50, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_DROPDOWNLIST)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) $iFuncSub[2] = GUICtrlCreateInput("Test Item Name", 90, 65+$TopDown, 210, 20);, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_DROPDOWNLIST)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Function/Sub:", 35, 100+$TopDown, 200, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[3] = GUICtrlCreateCombo("Select Function/Sub", 30, 115+$TopDown, 270, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_DROPDOWNLIST)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetState(-1, $GUI_DISABLE) ;~ GUICtrlCreateLabel("UUT No.:", 35, 150+$TopDown, 90, 20, $SS_LEFT) ;~ GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;~ GUICtrlSetColor(-1, $FontColor) ;~ $iFuncSub[4] = GUICtrlCreateCombo("", 85, 147+$TopDown, 60, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_DROPDOWNLIST)) ;~ GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;~ GUICtrlSetData(-1, "1|2|3|4|5|6|7|8", "1") ;~ GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateGroup("Input Parameter:", 20, 150+$TopDown, 302, 165) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $dGap = 21 $iParam[0][0] = GUICtrlCreateLabel("Param", 20, 170+$TopDown, 120, 20, $SS_CENTER);, BitOR($ES_CENTER, $ES_READONLY, $ES_AUTOHSCROLL)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) $iParam[0][1] = GUICtrlCreateLabel("Value", 140, 170+$TopDown, 176, 20, $SS_CENTER);, BitOR($ES_AUTOHSCROLL, $ES_CENTER, $ES_READONLY)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Measurement Min:", 35, 325+$TopDown, 200, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[5] = GUICtrlCreateInput("", 30, 340+$TopDown, 200, 20, BitOR($ES_AUTOHSCROLL, $ES_LEFT)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Measurement Max:", 35, 365+$TopDown, 200, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[6] = GUICtrlCreateInput("", 30, 380+$TopDown, 200, 20, BitOR($ES_AUTOHSCROLL, $ES_LEFT)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Unit:", 35, 405+$TopDown, 200, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[7] = GUICtrlCreateInput("", 30, 420+$TopDown, 200, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlCreateLabel("Retry:", 35, 445+$TopDown, 95, 20, $SS_LEFT) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUICtrlSetColor(-1, $FontColor) $iFuncSub[8] = GUICtrlCreateInput("", 30, 460+$TopDown, 95, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_NUMBER)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;~ GUICtrlCreateLabel("Fail Goto:", 140, 445+$TopDown, 95, 20, $SS_LEFT) ;~ GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;~ GUICtrlSetColor(-1, $FontColor) ;~ $iFuncSub[9] = GUICtrlCreateInput("", 135, 460+$TopDown, 95, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_NUMBER)) ;~ GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) $iFuncSub[10] = GUICtrlCreateButton("Save", 160, 495+$TopDown, 70, 30) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) $iFuncSub[11] = GUICtrlCreateButton("Clear", 240, 495+$TopDown, 70, 30) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) GUISetState(@SW_HIDE, $hGUI) ; Create child window which will be scrollable $hAperture = GUICreate("", 298, 126, 21, 185+$TopDown, $WS_POPUP, $WS_EX_MDICHILD, $hGUI) GUISetBkColor($White) For $r = 0 To 24 $iParam[$r+1][0] = GUICtrlCreateInput("Param" & $r+1, 2, ($dGap*$r)+2, 120, 20, BitOR($ES_AUTOHSCROLL, $ES_CENTER, $ES_READONLY)) GUICtrlSetState($iParam[$r+1][0], $GUI_HIDE) $iParam[$r+1][1] = GUICtrlCreateInput("Vacant", 123, ($dGap*$r)+2, 176, 20, BitOR($ES_AUTOHSCROLL, $ES_CENTER)) GUICtrlSetState($iParam[$r+1][1], $GUI_HIDE) $iParam[$r+1][2] = GUICtrlCreateButton("TRUE", 121, ($dGap*$r)+1, 167, 22);, BitOR($ES_AUTOHSCROLL, $ES_CENTER)) GUICtrlSetState($iParam[$r+1][2], $GUI_HIDE) Next GUISetState(@SW_HIDE, $hAperture) ; make the scrollbars $hScroll = 21 * $r ;~ If $hScroll < 300 Then $hScroll = 320 _GUIScrollbars_Generate($hAperture, 0, $hScroll) GUICtrlCreateTabitem ("") #EndRegion #EndRegion --->> GUI Info Tab #Region -->> Load default test program that been save in configuration file $GetDefProgram = _MDBSearch($fSystemDatabase, $SysDBPassword, "Configuration", "Key", "DefaultProgram", "Value") If FileExists($GetDefProgram) Then _LoadProgramData($GetDefProgram) $GetProgramPath = $GetDefProgram EndIf #EndRegion ---> Load default #Region -->> ListView Color Setting ReDim $aLV1[_GUICtrlListView_GetItemCount($hListView)][_GUICtrlListView_GetColumnCount($hListView)][5] ; create array to hold ListView-handle and accordingly array ;Global $ahWndSets[1][2] = [[$hListView, $aLV1]] $ahWndSets[0][0] = $hListView $ahWndSets[0][1] = $aLV1 ;_DebugArrayDisplay($ahWndSets, "$ahWndSets") #EndRegion -->> ListView Color Setting ; Register the function DateTime() to be called every 500ms, to display current Date and Time AdlibRegister("DateTime", 1000) ; Set Parent window menu _UserAccessSetting($flexATSAccessRight) GUIDelete($LogGUI) ;Delete/Close Login Windows once loading completed ;GUISetState(@SW_SHOW, $hGUI) GUISetState(@SW_MAXIMIZE, $hGUI) #Region -->> Set Right Click Menu on Listview Global $idContextmenu = _GUICtrlMenu_CreatePopup() If $flexATSAccessRight <> 4 Then _GUICtrlMenu_InsertMenuItem($idContextmenu, 0, "Insert", $idSubInsert) _GUICtrlMenu_InsertMenuItem($idContextmenu, 1, "Delete", $idSubDelete) _GUICtrlMenu_InsertMenuItem($idContextmenu, 2, "Clear", $idSubClear) _GUICtrlMenu_InsertMenuItem($idContextmenu, 3, "", 0) _GUICtrlMenu_InsertMenuItem($idContextmenu, 4, "Cut", $idSubCut) _GUICtrlMenu_InsertMenuItem($idContextmenu, 5, "Copy", $idSubCopy) _GUICtrlMenu_InsertMenuItem($idContextmenu, 6, "Paste", $idSubPaste) EndIf #EndRegion GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $MenuFile[6], $ToolsBtn[13] ;Exit Test Platform _ClearListViewResult() _CompareEditItem() If $ScriptChange = 1 Then $SaveChange = MsgBox($MB_YESNO, $GUITitle, "Test Program Script Has been Change..." & @CRLF & "Do you want to save changes?") If $SaveChange = 6 Then ;~ _DebugArrayDisplay($aProgramInfo) _SaveTestProgram() _SaveTestItem() EndIf EndIf ExitLoop Case $MenuFile[1], $ToolsBtn[1] ;Create New Test Program StatusWrite("Create New Test Program...") Local $NewProgramPath = _NewProgram($hGUI) If $NewProgramPath <> -1 Then GUISetState(@SW_HIDE, $hAperture) GUICtrlSetState($GUITab[1], $GUI_SHOW) _LoadProgramData($NewProgramPath) _TestItemSelected("No.") StatusWrite("New Test Program Loaded...") $GetProgramPath = $NewProgramPath EndIf Case $MenuFile[2], $ToolsBtn[2] ;Open/Load Test Program StatusWrite("Open/Load Program") ProcessClose($EditPID) AdlibUnRegister("_CheckSave") $OpenProgramPath = LoadProgram($hGUI) ;~ WinActivate($hGUI) If $OpenProgramPath <> -1 Then GUISetState(@SW_HIDE, $hAperture) GUICtrlSetState($GUITab[1], $GUI_SHOW) _LoadProgramData($OpenProgramPath) _TestItemSelected("No.") StatusWrite("Test Program Loaded...") $GetProgramPath = $OpenProgramPath EndIf Case $MenuOpt[3] ;Open/Load Old Version Test Program StatusWrite("Open/Load Old Version Test Program...") $LoadOldProgramPath = _ProgramMenu($hGUI) ;~ WinActivate($hGUI) If $LoadOldProgramPath <> -1 Then GUISetState(@SW_HIDE, $hAperture) GUICtrlSetState($GUITab[1], $GUI_SHOW) _LoadProgramData($LoadOldProgramPath) _TestItemSelected("No.") StatusWrite("Test Program Loaded...") $GetProgramPath = $LoadOldProgramPath EndIf Case $MenuOpt[1] ; System configuration _OptionMenu($hGUI) GUICtrlSetData($InfoTab[8], _UUTNoCombo(), $aProductData[_ArraySearch($aProductData, "UUTQty")][1]) Case $MenuFile[4], $ToolsBtn[3] ;Save Button ;ConsoleWrite("$ScriptChange=" & $ScriptChange & @CRLF) If WinExists("[CLASS:Notepad++]") Then WinClose("[CLASS:Notepad++]") AdlibUnRegister("_CheckSave") EndIf _CompareEditItem(1) If StringCompare(GUICtrlRead($iFuncSub[1]), "No.") <> 0 Then _SaveFuncParam() _SaveTestProgram() _SaveTestItem() _ClearListViewResult() $aOriTestItemData = $aTestItemData $ScriptChange = 0 ;~ AdlibUnRegister("_CheckSave") StatusWrite("Test Program Saved...") Case $ToolsBtn[4] ; Cancel Changes $aTestItemData = $aOriTestItemData _FixRowNo_Date() ; Updated list view data _UpdateListView() StatusWrite("Restore All Changes...") Case $InfoTab[12] ;Flexflow On or Off _SetONOFF($InfoTab[12], GUICtrlRead($InfoTab[12]), "ON") Case $InfoTab[13] ;Flexflow On or Off _SetONOFF($InfoTab[13], GUICtrlRead($InfoTab[13]), "ON") Case $ItemInsert, $MenuEdit[6] ;Insert New Row $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _ArrayInsert($aTestItemData, $ClickedRow, $ClickedRow + 1) _FixRowNo_Date() ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData after Insert") _UpdateListView() StatusWrite("New Test Item Row Inserted...") Case $ItemDel, $ToolsBtn[9], $MenuEdit[7] ;Delete Row $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _GUICtrlListView_DeleteItemsSelected($ListViewTbl) StatusWrite("Deleted Test Item: " & $ClickedRow+1 & " - " & $aTestItemData[$ClickedRow][2] ) _ArrayDelete($aTestItemData, $ClickedRow) ; Update test items numbering and fix date _FixRowNo_Date() ; Updated list view data _UpdateListView() Case $ItemClear ;Clear Row Data $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _GUICtrlListView_DeleteItemsSelected($ListViewTbl) StatusWrite("Test Item Row Clear...") _ArrayClearRow($ClickedRow) ; Update test items numbering and fix date _FixRowNo_Date() ; Updated list view data _ClearListViewResult() _UpdateListView() Case $ItemCut, $ToolsBtn[6], $MenuEdit[3] ;Cut Row Data $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _GUICtrlListView_DeleteItemsSelected($ListViewTbl) $aGetData = _ArrayGetData($ClickedRow) _ArrayDelete($aTestItemData, $ClickedRow) ; Update test items numbering and fix date _FixRowNo_Date() ; Updated list view data _ClearListViewResult() _UpdateListView() StatusWrite("Test Item Row Cut...") Case $ItemCopy, $ToolsBtn[7], $MenuEdit[4] ;Copy Row Data $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) ;~ _GUICtrlListView_DeleteItemsSelected($ListViewTbl) $aGetData = _ArrayGetData($ClickedRow) ; Update test items numbering and fix date _FixRowNo_Date() ; Updated list view data _ClearListViewResult() _UpdateListView() StatusWrite("Test Item Row Cut...") Case $ItemPaste, $ToolsBtn[8], $MenuEdit[5] ;Paste Row Data from Cut/Copy onto current selected Row $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _GUICtrlListView_DeleteItemsSelected($ListViewTbl) _ArrayInsertData($ClickedRow, $aGetData) ; Update test items numbering and fix date _FixRowNo_Date() ; Updated list view data ;~ _ClearListViewResult() _UpdateListView() _TestItemSelected(GUICtrlRead($iFuncSub[1])) StatusWrite("Test Item Paste...") Case $GUITab[0] If GUICtrlRead($GUITab[0]) = 2 Then GUISetState(@SW_SHOW, $hAperture) Else GUISetState(@SW_HIDE, $hAperture) EndIf If $GetProgramPath <> "" Then _CompareEditItem() Case $iFuncSub[10] ;Param Save Button If WinExists("[CLASS:Notepad++]") Then WinClose("[CLASS:Notepad++]") AdlibUnRegister("_CheckSave") EndIf _SaveFuncParam() _SaveTestItem() _UpdateListView() Case $iFuncSub[11] ;Param Clear Button _ClearFuncSub() Case $iFuncSub[1] ; Test Item Number _TestItemSelected(GUICtrlRead($iFuncSub[1])) Case $iFuncSub[3] ; FuncSubCombo $rFuncSubRead = GUICtrlRead($iFuncSub[3]) If StringCompare($rFuncSubRead, "Select Function/Sub") <> 0 Then Local $i = _ArraySearch($aFuncSubList, $rFuncSubRead) $aReadParamName = _aReadParamName($i) ;~ _DebugArrayDisplay($aReadParamName, "$aReadParamName") ;create a empty value for set parameter, set new value for selected function Local $aEmptyValue[UBound($aReadParamName)+1] ; Set param list view _SetParamInput($aReadParamName, $aEmptyValue) Else For $r = 1 To 25 GUICtrlSetData($iParam[$r][0], "") GUICtrlSetData($iParam[$r][1], "") GUICtrlSetState($iParam[$r][0], $GUI_HIDE) GUICtrlSetState($iParam[$r][1], $GUI_HIDE) GUICtrlSetState($iParam[$r][2], $GUI_HIDE) Next EndIf ; Clear setting data when new function or sub been selected GUICtrlSetData($iFuncSub[2], "") GUICtrlSetData($iFuncSub[5], "") GUICtrlSetData($iFuncSub[6], "") GUICtrlSetData($iFuncSub[7], "") GUICtrlSetData($iFuncSub[8], "") ;~ GUICtrlSetData($iFuncSub[9], "") Case $iParam[1][2], $iParam[2][2], $iParam[3][2], $iParam[4][2], $iParam[5][2], $iParam[6][2], $iParam[7][2], $iParam[8][2], $iParam[9][2], $iParam[10][2], $iParam[11][2], $iParam[12][2], $iParam[13][2], $iParam[14][2], $iParam[15][2], $iParam[16][2], $iParam[17][2], $iParam[18][2], $iParam[19][2], $iParam[20][2], $iParam[21][2], $iParam[22][2], $iParam[23][2], $iParam[24][2], $iParam[25][2] For $r = 1 To 25 If StringCompare(GUICtrlRead($iParam[$r][2]), "TRUE") = 0 Then GUICtrlSetData($iParam[$r][2], "FALSE") GUICtrlSetColor($iParam[$r][2], $Red) Else GUICtrlSetData($iParam[$r][2], "TRUE") GUICtrlSetColor($iParam[$r][2], $Green) EndIf Next Case $ToolsBtn[5] ; Edit VBScript ;~ ShellExecute("wscript.exe", "TempTestProgram.vbs", ) Local $ScriptFile = '"' & @ScriptDir & '\TempTestProgram.vbs"' $EditPID = Run($ScriptEditting & " " & $ScriptFile) ;ConsoleWrite("Run($ScriptEditting) ProcessID " & $EditVBsPID & @CRLF) $VBsFileBefore = FileGetTime($ScriptFile, $FT_MODIFIED, $FT_STRING) AdlibRegister("_CheckSave", 1000) Case $ToolsBtn[10], $MenuRun[1] ; Run Button _RunTest() EndSwitch WEnd AdlibUnRegister("_CheckSave") AdlibUnRegister("DateTime") GUIDelete($hGUI) EndFunc ;==>MainPage Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $iIDFrom, $iCode, $tNMHDR, $tInfo $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) Switch $iIDFrom Case $ListViewTbl, $hListView Switch $iCode Case $NM_RCLICK $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam) If DllStructGetData($tInfo, "Item") > -1 Then _GUICtrlMenu_TrackPopupMenu($idContextmenu, $hGUI) EndIf Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) $ItemNo = DllStructGetData($tInfo, "Index") + 1 If $ItemNo = 0 Then $ItemNo = "No." GUICtrlSetData($iFuncSub[1], "") GUICtrlSetData($iFuncSub[1], $rItemCombo, $ItemNo) _TestItemSelected($ItemNo) Case $NM_CUSTOMDRAW If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $ilParam) Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage') Switch $iDrawStage Case $CDDS_ITEMPREPAINT Return $CDRF_NOTIFYSUBITEMDRAW Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM) $iItem = DllStructGetData($tCustDraw, 'dwItemSpec') $iSubitem = DllStructGetData($tCustDraw, 'iSubItem') If BitAND(__GUICtrlListView_GetItemParam($hWndFrom, $iItem), 2^$iSubitem) Then _DrawItemCol($hDC, $tCustDraw, $hWndFrom, $iItem, $iSubitem) Else _DrawDefault($hDC, $tCustDraw) EndIf Return $CDRF_NEWFONT EndSwitch Endswitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) Switch $iwParam Case $idSubInsert GUICtrlSendToDummy($ItemInsert) Case $idSubDelete GUICtrlSendToDummy($ItemDel) Case $idSubClear GUICtrlSendToDummy($ItemClear) Case $idSubCut GUICtrlSendToDummy($ItemCut) Case $idSubCopy GUICtrlSendToDummy($ItemCopy) Case $idSubPaste GUICtrlSendToDummy($ItemPaste) Case $ToolsBtn[11], $MenuRun[2] ; Single Step Button $ClickedRow = _GUICtrlListView_GetSelectedIndices($ListViewTbl) _RunTest($ClickedRow) Case $ToolsBtn[12], $MenuRun[3] ; Stop Test Button $StopTest = 1 ;If $flexATSAccessRight <> 4 Then _DisableAllBtn($GUI_ENABLE) ;~ Case $MenuRun[1] ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") ;~ Case $MenuRun[2] ;~ _DebugArrayDisplay($aFuncSubList, "$aFuncSubList") ;~ Case $MenuRun[3] ;~ _DebugArrayDisplay($aFFTestData, "$aFFTestData") Case $MenuRun[4] ; Set Debug Mode If BitAND(GUICtrlRead($MenuRun[4]), $GUI_CHECKED) = $GUI_CHECKED Then GUICtrlSetState($MenuRun[4], $GUI_UNCHECKED) IniWrite($ConfigFile, "General", "Debug Mode", "0") $DebugMode = IniRead($ConfigFile, "General", "Debug Mode", "0") ;GUISetBkColor($LightGreen, $hGUI) Else GUICtrlSetState($MenuRun[4], $GUI_CHECKED) IniWrite($ConfigFile, "General", "Debug Mode", "1") $DebugMode = IniRead($ConfigFile, "General", "Debug Mode", "0") ;GUISetBkColor($LightYellow, $hGUI) EndIf EndSwitch EndFunc ;==>WM_COMMAND Func _CheckSave() ; check is VBScript been modify ;ConsoleWrite("Check VBScript File Modification..." & @CRLF) Local $ScriptFile = @ScriptDir & "\TempTestProgram.vbs" $VBsFileAfter = FileGetTime($ScriptFile, $FT_MODIFIED, $FT_STRING) If StringCompare($VBsFileBefore, $VBsFileAfter) <> 0 Then $aFuncSubList = _LoadVBScript($ScriptFile) ;ConsoleWrite("New VBScript loaded..." & @CRLF) GUICtrlSetData($iFuncSub[3], "") $rFuncSubCombo = "Select Function/Sub" For $r = 1 To UBound($aFuncSubList) -1 $rFuncSubCombo = $rFuncSubCombo & "|" & $aFuncSubList[$r][0] Next GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, "Select Function/Sub") $VBsFileBefore = $VBsFileAfter ;_UpdateListView() StatusWrite("New VBScript loaded...") $ScriptChange = 1 EndIf EndFunc Func _F5Run() _RunTest(-1) EndFunc Func _F7Stop() $StopTest = 1 EndFunc Func _CloseBarcode() ReDim $aBarcodeSN[2][2] $aBarcodeSN[0][0] = "Barcode" $aBarcodeSN[0][1] = "Result" $aBarcodeSN[1][0] = "DummyBarcode" $aBarcodeSN[1][1] = "Passed" ;_DisableAllBtn($GUI_ENABLE) ;If $flexATSAccessRight = 4 Then ; GUICtrlSetState($ToolsBtn[13], $GUI_ENABLE) ; GUICtrlSetState($ToolsBtn[2], $GUI_ENABLE) ;EndIf $FF_ESC_Exit = 2 GUICtrlSendToDummy($ibOK) EndFunc Func _RunTest($iRow = -1) ; Close Editor notepad++ If WinExists("[CLASS:Notepad++]") Then WinClose("[CLASS:Notepad++]") AdlibUnRegister("_CheckSave") EndIf Local $StartRow, $EndRow, $RetValue, $TestResult, $RetValueSet, $TestResultSet="Passed" Local $StopAtFail=0 Local $UUTQty = GUICtrlRead($InfoTab[8]) ReDim $aBarcodeSN[$UUTQty+1][2] ReDim $aFFTestData[1][15][$UUTQty+1] $FinalResult = 1 ; Set as pass at the beginning of run test _DisableAllBtn() ; Disable unecessary button during test ;Check test program running mode If $iRow = -1 Then If $DebugMode = 0 Then $BarcodeLen = $aProductData[_ArraySearch($aProductData, "BarcodeLength")][1] $aBarcodeSN = _BarcodeInput($hGUI, $UUTQty, $BarcodeLen, $DummyBarcode) ;_DebugArrayDisplay($aBarcodeSN, "$aBarcodeSN") Else ;_DebugArrayDisplay($aBarcodeSN, "iRow = -1") For $r = 1 To $UUTQty $aBarcodeSN[$r][0] = "Dummy_" & $r & "_" & $DummyBarcode $aBarcodeSN[$r][1] = "Passed" Next EndIf Else For $r = 1 To $UUTQty $aBarcodeSN[$r][0] = "Dummy_" & $r & "_" & $DummyBarcode $aBarcodeSN[$r][1] = "Passed" Next EndIf ;_DebugArrayDisplay($aBarcodeSN, "$aBarcodeSN") For $r = 1 To $UUTQty If StringCompare($aBarcodeSN[$r][1], "Failed") = 0 Then ;MsgBox(0, "Flexflow Route error", "Error Routing") $FF_ESC_Exit = 1 ExitLoop EndIf Next If $FF_ESC_Exit = 0 Then ; Record/Log start testing time $StartTestTime = _NowCalc() GUICtrlSetData($InfoTab[18], $StartTestTime) GUICtrlSetData($InfoTab[19], "") GUICtrlSetData($InfoTab[20], "") StatusWrite("Start Testing...") GUICtrlSetData($StatusEdit, "Testing...") GUICtrlSetColor($StatusEdit, $Orange) _ClearListViewResult() ;_UpdateListView() ; Reset Stop button $StopTest = 0 If Not IsObj($oScriptControl) Then _ReloadVBScript() EndIf If $iRow <> -1 Then $StartRow = $iRow $EndRow = $iRow ;ConsoleWrite("Start single test: " & $StartRow & @CRLF) Else $StartRow = 0 $EndRow = UBound($aTestItemData)-1 EndIf $f = 0 ;array number skip for "False" Print Resullt For $r = $StartRow To $EndRow $ExeFunc = StringSplit($aTestItemData[$r][9], "|") ;~ _DebugArrayDisplay($ExeFunc, "$ExeFunc") _GUICtrlListView_AddSubItem($ListViewTbl, $r, "Testing", 7) If StringCompare($aTestItemData[$r][1], "TRUE") = 0 Then ; Check if Function sent is correct.. If StringCompare($ExeFunc[$ExeFunc[0]], $aTestItemData[$r][2]) = 0 Then ; Execute Script Test $StartTime = _NowCalc() StatusWrite($StartTime & " - Testing: " & $aTestItemData[$r][3]) If StringCompare($ExeFunc[UBound($ExeFunc)-2], "TRUE") = 0 Then $f = $f + 1 $RetryCount = Int($aTestItemData[$r][7]) For $Retry = 0 To 4 ; Max retry time is 5 times ;~ ;ConsoleWrite("Send ScriptControl..." & @CRLF) $RetValue = _ScriptControlRun($ExeFunc, $UUTQty) If IsArray($RetValue) Then ;~ _DebugArrayDisplay($RetValue, "$TestResult") For $aResult = 0 To UBound($RetValue)-1 If StringInStr($RetValue[$aResult], "|") > 0 Then $vSplit = StringSplit($RetValue[$aResult], "|") $RetValue[$aResult] = StringStripWS($vSplit[1], 8) If StringCompare($aTestItemData[$r][2], "Read_SN") = 0 Then ;;ConsoleWrite($aTestItemData[$r][2] & " - In Read_SN" & @CRLF) _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aBarcodeSN[1][0], 3) _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aBarcodeSN[1][0], 4) $aTestItemData[$r][4] = $aBarcodeSN[1][0] $aTestItemData[$r][5] = $aBarcodeSN[1][0] Else ;;ConsoleWrite($aTestItemData[$r][2] & " - Else SN" & @CRLF) _GUICtrlListView_AddSubItem($ListViewTbl, $r, $vSplit[1], 3) _GUICtrlListView_AddSubItem($ListViewTbl, $r, $vSplit[1], 4) $aTestItemData[$r][4] = StringStripWS($vSplit[1], 8) $aTestItemData[$r][5] = StringStripWS($vSplit[1], 8) EndIf EndIf $TestResult = _ResultCompare($RetValue[$aResult], $aTestItemData[$r][4], $aTestItemData[$r][5]) ; Flexflow data $EndTime = _NowCalc() ;~ ;ConsoleWrite($r & " - PARAM FF: " & $ExeFunc[UBound($ExeFunc)-2] & @CRLF) If StringCompare($ExeFunc[UBound($ExeFunc)-2], "TRUE") = 0 Then ;~ $f = $f + 1 If $iRow = -1 And $DebugMode = 0 Then _SaveFlexFlowArray($aResult+1, $f, $r, $RetValue[$aResult], $TestResult, $StartTime, $EndTime, $UUTQty) EndIf $RetValueSet = $RetValue[$aResult] $TestResultSet = $TestResult ;~ If $iRow = -1 Then $aBarcodeSN[$aResult+1][1] = $TestResult If StringCompare($TestResult, "Failed") = 0 Then $RetValueSet = $RetValue[$aResult] $TestResultSet = "Failed" $aBarcodeSN[$aResult+1][1] = "Failed" $FinalResult = 0 If StringCompare(GUICtrlRead($InfoTab[13]), "ON") = 0 Then $StopAtFail = 1 EndIf Next If StringCompare($TestResult, "Passed") = 0 Then ExitLoop EndIf If $Retry = $RetryCount Then ExitLoop Next ;If StringCompare($TestResultSet, "Failed") = 0 Then ; _SetItemParam($hListView, $r, 6, $White, $Red) ; _SetItemParam($hListView, $r, 7, $White, $Red) ;Else ; _SetItemParam($hListView, $r, 6, $White, $Green) ; _SetItemParam($hListView, $r, 7, $White, $Green) ;EndIf _GUICtrlListView_AddSubItem($ListViewTbl, $r, $RetValueSet, 6) _GUICtrlListView_AddSubItem($ListViewTbl, $r, $TestResultSet, 7) EndIf ; Check if Function sent is correct.. Else _GUICtrlListView_AddSubItem($ListViewTbl, $r, "Skiped", 7) ;_SetItemParam($hListView, $r, 7, $White, $Orange) EndIf ;If StringCompare($aTestItemData[$r][1], "TRUE") = 0 Then ; Stop testing when Stop Button Pushed!! If $StopTest = 1 Then ExitLoop ; Stop testing when test items failed!! If $StopAtFail = 1 Then ExitLoop ; Auto scroll listview display $iY = _GUICtrlListView_GetItemPositionY($ListViewTbl, $r) _GUICtrlListView_Scroll($ListViewTbl, 0, $iY) Next StatusWrite("Test Ended...") If $StopTest <> 1 And $iRow = -1 And $DebugMode = 0 Then For $rUUT = 1 To $UUTQty $xmlFile = _CreateXML($rUUT) If StringCompare(GUICtrlRead($InfoTab[12]), "ON") = 0 Then If $StopAtFail = 1 Then $iYesNo = MsgBox($MB_YESNO, $GUITitle, "Do you want to upload failed unit into flexflow?") If $iYesNo = 6 Then _FFSaveResult($aBarcodeSN[$rUUT][0], $xmlFile) EndIf Else _FFSaveResult($aBarcodeSN[$rUUT][0], $xmlFile) EndIf EndIf Next EndIf EndIf ; Enable all Push button after test program execution If $flexATSAccessRight <> 4 Then _DisableAllBtn($GUI_ENABLE) If $flexATSAccessRight = 4 Then GUICtrlSetState($ToolsBtn[13], $GUI_ENABLE) GUICtrlSetState($ToolsBtn[2], $GUI_ENABLE) EndIf ;~ _DebugArrayDisplay($aBarcodeSN, "$aBarcodeSN") #Region ; Set/Update Test Time Information Group $EndTestTime = _NowCalc() $iTime2GoSec = _DateDiff('s', $StartTestTime, $EndTestTime) $iTime2GoMin = Int($iTime2GoSec / 60) $iTime2GoSec = Mod($iTime2GoSec, 60) ; Display result - adding padding 0 to Sec if required $TotalTestTime = StringFormat("%02i", $iTime2GoMin) & ":" & StringFormat("%02i", $iTime2GoSec) GUICtrlSetData($InfoTab[19], $EndTestTime) GUICtrlSetData($InfoTab[20], $TotalTestTime) #EndRegion #Region ; Set/Update Test Yield Information Local $cTtlUnit, $cPassUnit, $cFailUnit, $cFPY $cTtlUnit = Int(GUICtrlRead($InfoTab[14])) + 1 ; Total Tested Unit GUICtrlSetData($InfoTab[14], $cTtlUnit) If $FinalResult = 1 Then If $FF_ESC_Exit = 0 Then $cPassUnit = Int(GUICtrlRead($InfoTab[15])) + 1 ; Total Passed Unit GUICtrlSetData($InfoTab[15], $cPassUnit) GUICtrlSetData($StatusEdit, "PASSED") GUICtrlSetColor($StatusEdit, $Green) EndIf Else $cFailUnit = Int(GUICtrlRead($InfoTab[16])) + 1 ; Total Failed Unit GUICtrlSetData($InfoTab[16], $cFailUnit) If $StopTest = 1 Then GUICtrlSetData($StatusEdit, "STOPPED") GUICtrlSetColor($StatusEdit, $Red) Else GUICtrlSetData($StatusEdit, "FAILED") GUICtrlSetColor($StatusEdit, $Red) EndIf EndIf If $FF_ESC_Exit = 1 Then GUICtrlSetData($StatusEdit, "FlexFlow Error") GUICtrlSetColor($StatusEdit, $Red) ElseIf $FF_ESC_Exit = 2 Then GUICtrlSetData($StatusEdit, "Abort") GUICtrlSetColor($StatusEdit, $Red) ElseIf $StopTest = 1 Then GUICtrlSetData($StatusEdit, "STOPPED") GUICtrlSetColor($StatusEdit, $Red) EndIf $cFPY = Round($cPassUnit/$cTtlUnit*100, 2) GUICtrlSetData($InfoTab[17], $cFPY & "%") #EndRegion If $FF_ESC_Exit <> 2 And $flexATSAccessRight = 4 Then _RunTest() EndFunc Func _SaveFlexFlowArray($Bar, $f, $r, $RetValue, $TestResult, $StartTime, $EndTime, $UUTQty) ReDim $aFFTestData[$f+1][15][$UUTQty+1] ;;ConsoleWrite("_SaveFlexFlowArray:"& $aTestItemData[$r][3] & " - " & $RetValue & @CRLF) ;~ $aFFTestData[1][15] = [["GROUP NAME", "TYPE", "MODULETIME/TOTALTIME", "TIMESTAMP", "Group STATUS", "TEST NAME", "DESCRIPTION", "UNIT", "VALUE", "HILIM", "LOLIM", "STATUS", "RULE", "TARGET", "DATATYPE"]] $aFFTestData[$f][0][$Bar] = $aTestItemData[$r][3] ; Test Item Name/Group Name $aFFTestData[$f][1][$Bar] = _NumericOrString($aTestItemData[$r][4]) ; TYPE "NumericLimitTest"/"TEXT" $aFFTestData[$f][2][$Bar] = _DateDiff('s', $StartTime, $EndTime) ; MODULETIME/TOTALTIME $aFFTestData[$f][3][$Bar] = StringReplace(_NowCalc(), "/", "-") ; TIMESTAMP YYYY/MM/DD HH:MM:SS to "2019-10-15 20:28:05" $aFFTestData[$f][4][$Bar] = $TestResult ; STATUS Passed/Failed $aFFTestData[$f][5][$Bar] = $aTestItemData[$r][3] ; TEST NAME $aFFTestData[$f][6][$Bar] = $aTestItemData[$r][2] ; DESCRIPTION (Function or Sub Name) $aFFTestData[$f][7][$Bar] = $aTestItemData[$r][6] ; UNIT $aFFTestData[$f][8][$Bar] = $RetValue ; VALUE $aFFTestData[$f][9][$Bar] = $aTestItemData[$r][5] ; HILIM $aFFTestData[$f][10][$Bar] = $aTestItemData[$r][4] ; LOLIM $aFFTestData[$f][11][$Bar] = $TestResult ; STATUS $aFFTestData[$f][12][$Bar] = "EQ" ; RULE $aFFTestData[$f][13][$Bar] = "" ; TARGET - Hi/Low limit average or actual expected value $aFFTestData[$f][14][$Bar] = _NumericOrString($aTestItemData[$r][4]) ; DATATYPE "NumericLimitTest"/"TEXT" EndFunc Func _CreateXML($UUT = 1) Local $xmlTemp = @TempDir & "\TempSaveResult.xml" Local $StartTime = _NowCalc() Local $DateTime = StringReplace($StartTime, "/", "-") Local $rStation = $hFFStation Local $rFixture = GUICtrlRead($InfoTab[5]) Local $rModel = GUICtrlRead($InfoTab[1]) Local $rModelRev = GUICtrlRead($InfoTab[1]) Local $rCustomer = $aProductData[_ArraySearch($aProductData, "Customer")][1] Local $rTTestTime = _DateDiff("s", $StartTestTime, $EndTestTime) Local $SerialNumber = $aBarcodeSN[$UUT][0] Local $FinalTestResult = $aBarcodeSN[$UUT][1] $fileDataTime = StringStripWS(StringReplace(StringReplace($StartTime, "/", ""), ":", ""), $STR_STRIPALL) Local $xmlFileName = $FFxmlPath & "\" & @YEAR&@MON&@MDAY & "\SaveResult_" & $SerialNumber & "_" & $fileDataTime & ".xml" #Region ;-->> BATCH Data ;$xmlns="http://www.flextronics.com/fts/sfs/res" ;Dim $BatchLoad[4] = ["xmlns", "TIMESTAMP", "SYNTAX_REV", "COMPATIBLE_REV"] ;Dim $BatchData[4] = [$xmlns, $DateTime, "1.1", "1.1"] Dim $BatchLoad[3] = ["TIMESTAMP", "SYNTAX_REV", "COMPATIBLE_REV"] Dim $BatchData[3] = [$DateTime, "1.1", "1.1"] ;Create file (force overwrite existing file) $result = _XMLCreateFile($xmlTemp, "BATCH", $BatchLoad, $BatchData, True) #EndRegion #Region ;-> <FACTORY NAME="" LINE="" TESTER="A_AT1" FIXTURE="" SHIFT="" USER="administrator" /> Dim $FactoryLoad[6] = ["NAME", "LINE", "TESTER", "FIXTURE", "SHIFT", "USER"] Dim $FactoryData[6] = ["flextronics", "", $rStation, $rFixture, "", $flexATSUser] _XMLCreateRootAttr($xmlTemp, "BATCH", "FACTORY", $FactoryLoad, $FactoryData) #EndRegion #Region ;-> <PRODUCT NAME="Phone One" REVISION="P1" FAMILY="" CUSTOMER="" /> Dim $ProductLoad[4] = ["NAME", "REVISION", "FAMILY", "CUSTOMER"] Dim $ProductData[4] = [$rModel, $rModelRev, "", $rCustomer] _XMLCreateRootAttr($xmlTemp, "BATCH", "PRODUCT", $ProductLoad, $ProductData) #EndRegion ;#Region ;-> <REFS SEQ_REF="C:\FTS\Apps\Commodity GSM\Board_Level\Commodity GSM Board Level Test PD3.seq" FTS_REF="PM:v036,INT:V034(CFG:V013,RES:0.A9,MEA:1.14)" LIM_REF="" CFG_REF="C:\FTS\Apps\Commodity GSM\Board_Level\Commodity GSM Board Level Test PA1.cfg" CAL_REF="" INSTR_REF="" /> ;Dim $REFSLoad[6] = ["SEQ_REF", "FTS_REF", "LIM_REF", "CFG_REF", "CAL_REF", "INSTR_REF"] ;Dim $REFSData[6] = ["FlexATS 4.0", "", "", "", ""] ;_XMLCreateRootAttr($xmlTemp, "BATCH", "REFS", $REFSLoad, $REFSData) ;#EndRegion #Region ;-> <PANEL ID="Undef" COMMENT="" RUNMODE="Debug" TIMESTAMP="2003-02-06 19:05:46.210674" TESTTIME="284.253411" WAITTIME="0.000000" STATUS=""> Dim $PanelLoad[7] = ["ID", "COMMENT", "RUNMODE", "TIMESTAMP", "TESTTIME", "WAITTIME", "STATUS"] Dim $PanelData[7] = ["Undef", "", "Debug", $DateTime, $rTTestTime, "", ""] _XMLCreateRootNode($xmlTemp, "BATCH", "PANEL", $PanelLoad, $PanelData) #EndRegion #Region ;-> <DUT ID="2345" COMMENT="" PANEL="0" SOCKET="0" TIMESTAMP="2003-02-06 19:05:46.210674" TESTTIME="284.253411" STATUS="Passed"> Dim $DUTLoad[7] = ["ID", "COMMENT", "PANEL", "SOCKET", "TIMESTAMP", "TESTTIME", "STATUS"] Dim $DUTData[7] = [$SerialNumber, "", "0", "0", $DateTime, $rTTestTime, $FinalTestResult] _XMLCreateRootNode($xmlTemp, "PANEL", "DUT", $DUTLoad, $DUTData) #EndRegion #Region ;-> Test Equipment ID Group & Name ;<GROUP NAME="Read Equipment ID" STEPGROUP="Main" GROUPINDEX="1" LOOPINDEX="-1" TYPE="" RESOURCE="" MODULETIME="0.0" TOTALTIME="0.0" TIMESTAMP="2019-10-15 20:28:05" STATUS="Passed"> Dim $GroupLoad[10] = ["NAME", "STEPGROUP", "GROUPINDEX", "LOOPINDEX", "TYPE", "RESOURCE", "MODULETIME", "TOTALTIME", "TIMESTAMP", "STATUS"] Dim $GroupData[10] = ["Read Equipment ID", "Main", "1", "-1", "", "", "0.0", "0.0", $DateTime, "Passed"] _XMLCreateRootNode($xmlTemp, "DUT", "GROUP", $GroupLoad, $GroupData) ;<TEST NAME="Equipment_ID" DESCRIPTION="Equipment_ID" UNIT="" VALUE="DONM0303" HILIM="" LOLIM="" STATUS="Passed" RULE="GELE" TARGET="" DATATYPE="Text" /> Dim $TestLoad[10] = ["NAME", "DESCRIPTION", "UNIT", "VALUE", "HILIM", "LOLIM", "STATUS", "RULE", "TARGET", "DATATYPE"] Dim $TestData[10] = ["Equipment_ID", "Equipment_ID", "", @ComputerName, "", "", "Passed", "GELE", "", "Text"] _XMLCreateRootAttr($xmlTemp, "GROUP", "TEST", $TestLoad, $TestData) #EndRegion For $r = 1 To UBound($aFFTestData)-1 ;~ ;-> <GROUP NAME="Output Test" STEPGROUP="Main" GROUPINDEX="0" LOOPINDEX="-1" TYPE="NumericLimitTest" RESOURCE="" MODULETIME="1.336011" TOTALTIME="1.337166" TIMESTAMP="2003-02-06 19:05:47.837478" STATUS="Passed"> Dim $GroupResultLoad[10] = ["NAME", "STEPGROUP", "GROUPINDEX", "LOOPINDEX", "TYPE", "RESOURCE", "MODULETIME", "TOTALTIME", "TIMESTAMP", "STATUS"] ;~ Dim $GroupResultData[10] = [$aFFTestData[$r][0], "Main", $r+1, "-1", $aFFTestData[$r][1], "", $aFFTestData[$r][2], $aFFTestData[$r][2], $aFFTestData[$r][3], $aFFTestData[$r][4]] Dim $GroupResultData[10] = [$aFFTestData[$r][0][$UUT], "Main", $r+1, "-1", $aFFTestData[$r][1][$UUT], "", $aFFTestData[$r][2][$UUT], $aFFTestData[$r][2][$UUT], $aFFTestData[$r][3][$UUT], $aFFTestData[$r][4][$UUT]] _XMLCreateRootNode($xmlTemp, "DUT", "GROUP"&$r, $GroupResultLoad, $GroupResultData) Dim $TestResultLoad[10] = ["NAME", "DESCRIPTION", "UNIT", "VALUE", "HILIM", "LOLIM", "STATUS", "RULE", "TARGET", "DATATYPE"] ;~ Dim $TestResultData[10] = [$aFFTestData[$r][5], $aFFTestData[$r][6], $aFFTestData[$r][7], $aFFTestData[$r][8], $aFFTestData[$r][9], $aFFTestData[$r][10], $aFFTestData[$r][11], $aFFTestData[$r][12], $aFFTestData[$r][13], $aFFTestData[$r][14]] Dim $TestResultData[10] = [$aFFTestData[$r][5][$UUT], $aFFTestData[$r][6][$UUT], $aFFTestData[$r][7][$UUT], $aFFTestData[$r][8][$UUT], $aFFTestData[$r][9][$UUT], $aFFTestData[$r][10][$UUT], $aFFTestData[$r][11][$UUT], $aFFTestData[$r][12][$UUT], $aFFTestData[$r][13][$UUT], $aFFTestData[$r][14][$UUT]] _XMLCreateRootAttr($xmlTemp, "GROUP"&$r, "TEST", $TestResultLoad, $TestResultData) Next #Region ; Temp fix for group issues on xml, remove numbering "$r" $rString = FileRead($xmlTemp) For $r = 0 To UBound($aFFTestData)-1 $rString = StringReplace($rString, "GROUP"&$r&" NAME", "GROUP NAME") $rString = StringReplace($rString, "GROUP"&$r&">", "GROUP>") Next Local $hFileOpen = FileOpen($xmlFileName, 10) If $hFileOpen = -1 Then MsgBox($MB_SYSTEMMODAL, "", "An error occurred whilst writing the temporary file.") EndIf FileWrite($hFileOpen, $rString) FileClose($hFileOpen) $rString = "" ; Free up memory #EndRegion ;ConsoleWrite(_NowCalc() & @CRLF) ;ConsoleWrite("Processing Time(Sec): " & _DateDiff('s',$StartTime , _NowCalc()) & @CRLF) Return $xmlFileName EndFunc Func _LoadProgramData($aProgramPath) #Region -->> Load Product Program Information $aProductData = _ParserDataToArray($aProgramPath, $MDBPassword, "Product Information") ;~ _DebugArrayDisplay($aProductData) If Not IsArray($aProductData) Then Return -1 GUICtrlSetData($InfoTab[1], $aProductData[_ArraySearch($aProductData, "ModelName")][1]) GUICtrlSetData($InfoTab[2], $aProductData[_ArraySearch($aProductData, "ModelDesc")][1]) GUICtrlSetData($InfoTab[3], $aProductData[_ArraySearch($aProductData, "ModelPN")][1]) GUICtrlSetData($InfoTab[4], $aProductData[_ArraySearch($aProductData, "ModelRev")][1]) GUICtrlSetData($InfoTab[5], $aProductData[_ArraySearch($aProductData, "FixtureID")][1]) GUICtrlSetData($InfoTab[6], $aProductData[_ArraySearch($aProductData, "LifeCycle")][1]) GUICtrlSetData($InfoTab[7], $aProductData[_ArraySearch($aProductData, "CurrentCycle")][1]) GUICtrlSetData($InfoTab[8], $aProductData[_ArraySearch($aProductData, "UUTQty")][1]) GUICtrlSetData($InfoTab[9], $aProductData[_ArraySearch($aProductData, "TestStation")][1]) GUICtrlSetData($InfoTab[10], $aProductData[_ArraySearch($aProductData, "BarcodeLength")][1]) GUICtrlSetData($InfoTab[11], $aProductData[_ArraySearch($aProductData, "BarcodePrefix")][1]) _SetONOFF($InfoTab[12], $aProductData[_ArraySearch($aProductData, "FlexFlow")][1], "0") _SetONOFF($InfoTab[13], $aProductData[_ArraySearch($aProductData, "StopAtFail")][1], "0") #EndRegion #Region -->> Load VBs Code $FileName = $aProductData[_ArraySearch($aProductData, "TestStationName")][1] $ReadFile = _ParserDataToArray($aProgramPath, $MDBPassword, "[Test Program]", "[Attachment]", "[Filename] = '" & $FileName & "'") ;~ _DebugArrayDisplay($ReadFile, "$ReadFile") If IsArray($ReadFile) Then Local $VBsFile = @ScriptDir & "\TempTestProgram.vbs" ; Open the file for writing (append to the end of a file) and store the handle to a variable. Local $hFileOpen = FileOpen($VBsFile, 10) If $hFileOpen = -1 Then MsgBox($MB_SYSTEMMODAL, "", "An error occurred whilst writing the temporary file.") FileWrite($hFileOpen, BinaryToString($ReadFile[0][0], $SB_UTF16LE)) FileClose($hFileOpen) If FileExists($VBsFile) Then $aFuncSubList = _LoadVBScript($VBsFile) ;~ Load into Function/Sub Select Combo GUICtrlSetData($iFuncSub[3], "") $rFuncSubCombo = "Select Function/Sub" For $r = 1 To UBound($aFuncSubList) -1 $rFuncSubCombo = $rFuncSubCombo & "|" & $aFuncSubList[$r][0] Next GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, "Select Function/Sub") Else MsgBox($MB_SYSTEMMODAL, "flexATS", "VB Script file not found...") EndIf EndIf #EndRegion #Region -->> Load Test Item $aTestItemData = _ParserDataToArray($aProgramPath, $MDBPassword, "[Test Items]") ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") ; Set number row in to integer For $r = 0 To UBound($aTestItemData)-1 $aTestItemData[$r][0] = Int($aTestItemData[$r][0]) $aTestItemData[$r][1] = StringReplace($aTestItemData[$r][1], "●", "TRUE") $aTestItemData[$r][9] = StringReplace($aTestItemData[$r][9], "●", "TRUE") Next _ArraySort($aTestItemData, 0, 0, 0, 0) ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") ;~ ;;ConsoleWrite(UBound($aTestItemData) - 1 & @CRLF) $aOriTestItemData = $aTestItemData _UpdateListView() GUICtrlSetData($iFuncSub[1], $rItemCombo, "No.") #EndRegion EndFunc Func _TestItemSelected($rItemRead) ;~ $rItemRead = GUICtrlRead($iFuncSub[1]) If StringCompare($rItemRead, "No.") <> 0 Then _GUICtrlListView_ClickItem($ListViewTbl, $rItemRead-1, "left", False, 2) ; Get selected test item number ;~ $rItemRead = StringLeft(GUICtrlRead($iFuncSub[1]), StringInStr(GUICtrlRead($iFuncSub[1]), " - ")-1) ;~ ;;ConsoleWrite("_" & $rItemRead & "_" & @CRLF) ;~ Local $i = _ArraySearch($aTestItemData, $rItemRead) Local $i = $rItemRead-1 ;need to minus 1 as the row is started with 0 ;~ ;;ConsoleWrite("_" & $i & "_" & @CRLF) GUICtrlSetData($iFuncSub[2], $aTestItemData[$i][3]) GUICtrlSetData($iFuncSub[5], $aTestItemData[$i][4]) GUICtrlSetData($iFuncSub[6], $aTestItemData[$i][5]) GUICtrlSetData($iFuncSub[7], $aTestItemData[$i][6]) GUICtrlSetData($iFuncSub[8], $aTestItemData[$i][7]) ;~ GUICtrlSetData($iFuncSub[9], $aTestItemData[$i][8]) ; Set function/sub selection combo GUICtrlSetState($iFuncSub[3], $GUI_ENABLE) GUICtrlSetData($iFuncSub[3], "") If StringCompare($aTestItemData[$i][2], "") = 0 Then GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, "Select Function/Sub") Else GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, $aTestItemData[$i][2]) EndIf ;;ConsoleWrite($aTestItemData[$i][9] & @CRLF) ; Alan Need to update for multiple board $aReadParamValue = StringSplit($aTestItemData[$i][9], "|") ; Alan Need to update for multiple board ;~ _DebugArrayDisplay($aReadParamValue, "$aReadParamValue") ; Get function/sub parameter and load into array $rFuncSubRead = GUICtrlRead($iFuncSub[3]) $i = _ArraySearch($aFuncSubList, $rFuncSubRead) $aReadParamName = _aReadParamName($i) ;~ _DebugArrayDisplay($aReadParamValue, "$aReadParamValue") ; Set param list view _SetParamInput($aReadParamName, $aReadParamValue) Else _ClearFuncSub() EndIf EndFunc Func _SetParamInput($aParam, $aValue) Local $PrintValue ;~ _DebugArrayDisplay($aParam, "$aParam") ;~ _DebugArrayDisplay($aValue, "$aValue") ;Clear or empty all seeting for param For $r = 1 To 25 GUICtrlSetData($iParam[$r][0], "") GUICtrlSetData($iParam[$r][1], "") GUICtrlSetStyle($iParam[$r][1], BitOR($ES_AUTOHSCROLL, $ES_CENTER)) GUICtrlSetState($iParam[$r][0], $GUI_HIDE) GUICtrlSetState($iParam[$r][1], $GUI_HIDE) GUICtrlSetState($iParam[$r][2], $GUI_HIDE) Next ;Set param label and value For $r = 1 To $aParam[0] If StringCompare($aParam[$r], "") <> 0 Then GUICtrlSetData($iParam[$r][0], $aParam[$r]) GUICtrlSetData($iParam[$r][1], $aValue[$r]) GUICtrlSetState($iParam[$r][0], $GUI_SHOW) GUICtrlSetState($iParam[$r][1], $GUI_SHOW) EndIf Next ;~ ;ConsoleWrite($r & " - " & $aParam[0] & " - " & $aValue[0] & @CRLF) If StringCompare($aParam[1], "") = 0 Then $r = 1 If UBound($aValue) >= $r Then If StringCompare($aValue[$r], "") = 0 Then ;~ $PrintValue = "FALSE" $PrintValue = "TRUE" Else $PrintValue = $aValue[$r] EndIf GUICtrlSetData($iParam[$r][0],"Print Result") GUICtrlSetData($iParam[$r][2], $PrintValue) If StringCompare(GUICtrlRead($iParam[$r][2]), "FALSE") = 0 Then GUICtrlSetColor($iParam[$r][2], $Red) Else GUICtrlSetColor($iParam[$r][2], $Green) EndIf GUICtrlSetState($iParam[$r][0], $GUI_SHOW) GUICtrlSetState($iParam[$r][2], $GUI_SHOW) EndIf Local $hScroll = 21*$r If $hScroll < 220 Then $hScroll = 220 _GUIScrollbars_Generate($hAperture, 0, $hScroll) EndFunc Func _ClearFuncSub() GUICtrlSetData($iFuncSub[1], "") GUICtrlSetData($iFuncSub[1], $rItemCombo, "No.") GUICtrlSetData($iFuncSub[2], "") GUICtrlSetState($iFuncSub[3], $GUI_DISABLE) GUICtrlSetData($iFuncSub[3], "") GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, "Select Function/Sub") For $r = 1 To 25 GUICtrlSetData($iParam[$r][0], "") GUICtrlSetData($iParam[$r][1], "") GUICtrlSetState($iParam[$r][0], $GUI_HIDE) GUICtrlSetState($iParam[$r][1], $GUI_HIDE) GUICtrlSetState($iParam[$r][2], $GUI_HIDE) Next GUICtrlSetData($iFuncSub[5], "") GUICtrlSetData($iFuncSub[6], "") GUICtrlSetData($iFuncSub[7], "") GUICtrlSetData($iFuncSub[8], "") ;~ GUICtrlSetData($iFuncSub[9], "") EndFunc Func _CompareEditItem($Save = 0) Local $ONOFF = 0, $ProgramInfo = 0 Dim $aProgramInfo[1][4] $r = 0 $aProgramInfo[0][0] = "Keys" $aProgramInfo[0][1] = "KeysValue" $aProgramInfo[0][2] = "UpdatedOn" $aProgramInfo[0][3] = "UpdatedBy" If Not IsArray($aProductData) Then Return -1 If StringCompare(GUICtrlRead($InfoTab[1]), $aProductData[_ArraySearch($aProductData, "ModelName")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[1]) & " - " & $aProductData[_ArraySearch($aProductData, "ModelName")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "ModelName" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[1]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[2]), $aProductData[_ArraySearch($aProductData, "ModelDesc")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[2]) & " - " & $aProductData[_ArraySearch($aProductData, "ModelDesc")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "ModelDesc" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[2]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[3]), $aProductData[_ArraySearch($aProductData, "ModelPN")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[3]) & " - " & $aProductData[_ArraySearch($aProductData, "ModelPN")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "ModelPN" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[3]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[4]), $aProductData[_ArraySearch($aProductData, "ModelRev")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[4]) & " - " & $aProductData[_ArraySearch($aProductData, "ModelRev")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "ModelRev" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[4]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[5]), $aProductData[_ArraySearch($aProductData, "FixtureID")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[5]) & " - " & $aProductData[_ArraySearch($aProductData, "FixtureID")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "FixtureID" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[5]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[6]), $aProductData[_ArraySearch($aProductData, "LifeCycle")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[6]) & " - " & $aProductData[_ArraySearch($aProductData, "LifeCycle")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "LifeCycle" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[6]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[7]), $aProductData[_ArraySearch($aProductData, "CurrentCycle")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[7]) & " - " & $aProductData[_ArraySearch($aProductData, "CurrentCycle")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "CurrentCycle" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[7]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[8]), $aProductData[_ArraySearch($aProductData, "UUTQty")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[8]) & " - " & $aProductData[_ArraySearch($aProductData, "UUTQty")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "UUTQty" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[8]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[9]), $aProductData[_ArraySearch($aProductData, "TestStation")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[9]) & " - " & $aProductData[_ArraySearch($aProductData, "TestStation")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "TestStation" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[9]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[10]), $aProductData[_ArraySearch($aProductData, "BarcodeLength")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[10]) & " - " & $aProductData[_ArraySearch($aProductData, "BarcodeLength")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "BarcodeLength" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[10]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(GUICtrlRead($InfoTab[11]), $aProductData[_ArraySearch($aProductData, "BarcodePrefix")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(GUICtrlRead($InfoTab[11]) & " - " & $aProductData[_ArraySearch($aProductData, "BarcodePrefix")][1] & @CRLF) $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "BarcodePrefix" $aProgramInfo[$r][1] = GUICtrlRead($InfoTab[11]) $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(_GetZeroOne(GUICtrlRead($InfoTab[12]), "ON"), $aProductData[_ArraySearch($aProductData, "FlexFlow")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(_GetZeroOne(GUICtrlRead($InfoTab[12]), "ON") & " - " & $aProductData[_ArraySearch($aProductData, "FlexFlow")][1] & @CRLF) If StringCompare(GUICtrlRead($InfoTab[12]), "ON") = 0 Then $ONOFF = 1 Else $ONOFF = 0 EndIf $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "FlexFlow" $aProgramInfo[$r][1] = $ONOFF $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If StringCompare(_GetZeroOne(GUICtrlRead($InfoTab[13]), "ON"), $aProductData[_ArraySearch($aProductData, "StopAtFail")][1]) <> 0 Then $ProgramInfo = 1 ;;ConsoleWrite(_GetZeroOne(GUICtrlRead($InfoTab[13]), "ON") & " - " & $aProductData[_ArraySearch($aProductData, "StopAtFail")][1] & @CRLF) If StringCompare(GUICtrlRead($InfoTab[13]), "ON") = 0 Then $ONOFF = 1 Else $ONOFF = 0 EndIf $r = $r + 1 ReDim $aProgramInfo[$r+1][4] $aProgramInfo[$r][0] = "StopAtFail" $aProgramInfo[$r][1] = $ONOFF $aProgramInfo[$r][2] = _NowCalc() $aProgramInfo[$r][3] = $flexATSUser EndIf If $ProgramInfo = 1 And $Save = 0 Then $SaveChange = MsgBox($MB_YESNO, "FlexATS", "Test Program Information Has been Change..." & @CRLF & "Do you want to save changes?") If $SaveChange = 6 Then ;~ _DebugArrayDisplay($aProgramInfo) _SaveProductInfo($aProgramInfo) $aProductData = _ParserDataToArray($GetProgramPath, $MDBPassword, "Product Information") StatusWrite("Product Information Saved...") Else _LoadProgramData($GetProgramPath) StatusWrite("Product Information Saved...") EndIf ElseIf $Save = 1 Then _SaveProductInfo($aProgramInfo) $aProductData = _ParserDataToArray($GetProgramPath, $MDBPassword, "Product Information") StatusWrite("Product Information Saved...") EndIf EndFunc Func _SetONOFF($hWID, $Data1, $Data2) If StringCompare($Data1, $Data2) = 0 Then GUICtrlSetData($hWID, "OFF") GUICtrlSetColor($hWID, $White) GUICtrlSetBkColor($hWID, $Red) ;~ GUICtrlSetFont($hWID, 9);, $FW_SEMIBOLD ) Else GUICtrlSetData($hWID, "ON") GUICtrlSetColor($hWID, $Black) GUICtrlSetBkColor($hWID, $Green) ;~ GUICtrlSetFont($hWID, 9);, $FW_SEMIBOLD ) EndIf EndFunc Func _SaveProductInfo($readArray) ;~ _DebugArrayDisplay($readArray, "$readArray") If UBound($readArray) > 1 Then $UpdateRtn = _AddArrayData($GetProgramPath, $MDBPassword, "Product Information", $readArray, "Keys") EndIf ;~ $ScriptChange = 0 EndFunc Func _SaveFuncParam() Local $rParam $r = GUICtrlRead($iFuncSub[1])-1 $aTestItemData[$r][0] = GUICtrlRead($iFuncSub[1]) $aTestItemData[$r][1] = "FALSE" If _GUICtrlListView_GetItemChecked($ListViewTbl, $aTestItemData[$r][0]-1) = True Then $aTestItemData[$r][1] = "TRUE" $aTestItemData[$r][2] = GUICtrlRead($iFuncSub[3]) $aTestItemData[$r][3] = GUICtrlRead($iFuncSub[2]) $aTestItemData[$r][4] = GUICtrlRead($iFuncSub[5]) $aTestItemData[$r][5] = GUICtrlRead($iFuncSub[6]) $aTestItemData[$r][6] = GUICtrlRead($iFuncSub[7]) $aTestItemData[$r][7] = GUICtrlRead($iFuncSub[8]) ;~ $aTestItemData[$r][8] = GUICtrlRead($iFuncSub[9]) $aTestItemData[$r][9] = _ReadParam($r) $aTestItemData[$r][10] = _NowCalc() $aTestItemData[$r][11] = $flexATSUser ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") ;~ _UpdateListView() ;~ _SaveTestItem() EndFunc Func _ReadParam($Row) Local $rParam = -1 ; read parameter data Local $i = _ArraySearch($aFuncSubList, $aTestItemData[$Row][2]) If Not @error Then ;~ ;ConsoleWrite($aFuncSubList[$i][0] & @CRLF) $aParamNo = StringSplit(StringTrimRight(StringReplace(_ArrayToString($aFuncSubList, "|", $i, $i, @CRLF, 1), "||", ""), 1), "|") $rParam = GUICtrlRead($iParam[1][1]) ;~ ;ConsoleWrite(GUICtrlRead($iParam[1][0]) & " - " & $rParam & @CRLF) If StringCompare(GUICtrlRead($iParam[1][0]), "Print Result") <> 0 Then For $r = 2 To $aParamNo[0] $rParam = $rParam & "|" & GUICtrlRead($iParam[$r][1]) Next $rParam = $rParam & "|" & GUICtrlRead($iParam[$r][2]) & "|" & $aTestItemData[$Row][2] Else $rParam = GUICtrlRead($iParam[1][2]) & "|" & $aTestItemData[$Row][2] EndIf EndIf ;~ ;ConsoleWrite($rParam & @CRLF) Return $rParam EndFunc Func _ReloadVBScript() $oScriptControl = ObjCreate("ScriptControl") If @error Then MsgBox($MB_SYSTEMMODAL, $GUITitle, "MSScriptControl.ScriptControl" & @CRLF & "Error Getting an active MSScriptControl.ScriptControl Object. Error code: " & Hex(@error, 8)) Exit EndIf $FileName = $aProductData[_ArraySearch($aProductData, "TestStationName")][1] $ReadFile = _ParserDataToArray($GetProgramPath, $MDBPassword, "[Test Program]", "[Attachment]", "[Filename] = '" & $FileName & "'") Local $VBsFile = @ScriptDir & "\TempTestProgram.vbs" ; Open the file for writing (append to the end of a file) and store the handle to a variable. Local $hFileOpen = FileOpen($VBsFile, 10) If $hFileOpen = -1 Then MsgBox($MB_SYSTEMMODAL, "", "An error occurred whilst writing the temporary file.") FileWrite($hFileOpen, BinaryToString($ReadFile[0][0])) FileClose($hFileOpen) If FileExists($VBsFile) Then $aFuncSubList = _LoadVBScript($VBsFile) ; Load into Function/Sub Select Combo GUICtrlSetData($iFuncSub[3], "") $rFuncSubCombo = "Select Function/Sub" For $r = 1 To UBound($aFuncSubList) -1 $rFuncSubCombo = $rFuncSubCombo & "|" & $aFuncSubList[$r][0] Next GUICtrlSetData($iFuncSub[3], $rFuncSubCombo, "Select Function/Sub") Else MsgBox($MB_SYSTEMMODAL, "flexATS", "VB Script file not found...") EndIf EndFunc Func _DisableAllBtn($GUIState = $GUI_DISABLE) ; Menu Items GUICtrlSetState($MenuFile[0], $GUIState) ; File GUICtrlSetState($MenuEdit[0], $GUIState) ; Edit GUICtrlSetState($MenuOpt[0], $GUIState) ; Option GUICtrlSetState($MenuHelp[0], $GUIState) ; Help ; Toolbar Button For $r = 1 To 9 GUICtrlSetState($ToolsBtn[$r], $GUIState) Next GUICtrlSetState($ToolsBtn[13], $GUIState) ; GUI Tab GUISetState(@SW_HIDE, $hAperture) If GUICtrlGetState($GUITab[1]) <> $GUI_SHOW Then GUICtrlSetState($GUITab[1], $GUI_SHOW) EndIf GUICtrlSetState($GUITab[0], $GUIState) ; Tab Input For $r = 1 To 4 GUICtrlSetState($InfoTab[$r], $GUIState) Next EndFunc Func _SaveTestProgram() ;ConsoleWrite("_SaveTestProgram() = " & $ScriptChange & @CRLF) If $ScriptChange = 1 Then ; Make sure there are change on test script before save $FileName = $aProductData[_ArraySearch($aProductData, "TestStationName")][1] _UpdateData($GetProgramPath, $MDBPassword, "[Test Program]", "[Filename]='" & $FileName & "_Backup'", "[Filename]='" & $FileName & "'") Local $hFile = FileOpen(@ScriptDir & "\TempTestProgram.vbs") Local $dBinaryData = StringToBinary(FileRead($hFile), $SB_UTF16LE) FileClose($hFile) Dim $aTPFields[2][4] = [["Filename", "Attachment", "UpdatedOn", "UpdatedBy"], _ [$FileName, $dBinaryData, _NowCalc(), $flexATSUser]] _AddArrayData($GetProgramPath, $MDBPassword, "[Test Program]", $aTPFields, "Filename") ;~ MsgBox(0, "", "_SaveTestProgram()" & @CRLF) EndIf $ScriptChange = 0 EndFunc Func _SaveTestItem() _FixRowNo_Date() ;~ $UUTNo = GUICtrlRead($iFuncSub[4]) $aTIFields = _TestItemTableData() _ClearListViewResult() ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") _ArrayConcatenate($aTIFields, $aTestItemData) ;~ _DebugArrayDisplay($aTIFields, "$aTIFields") $Table = _MDBCreateTable($GetProgramPath, $MDBPassword, "Test Items", $aTIFields, "", "FuncSubParam", "UpdatedOn", "RowNo") ;~ _DebugArrayDisplay($aTIFields, "$aTIFields") _AddArrayData($GetProgramPath, $MDBPassword, "Test Items", $aTIFields, "RowNo") EndFunc Func _UpdateListView() ;~ GUICtrlSetData($iFuncSub[1], "") _GUICtrlListView_DeleteAllItems($ListViewTbl) $rItemCombo = "No." For $r = 0 To UBound($aTestItemData) - 1 $rItemCombo = $rItemCombo & "|" & $r + 1; & " - " & $aTestItemData[$r][3] _GUICtrlListView_AddItem($ListViewTbl, $aTestItemData[$r][0]) ; NO _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][2], 1) ; FuncSub If StringCompare($aTestItemData[$r][3], "") = 0 Then $aTestItemData[$r][3] = $aTestItemData[$r][2] _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][3], 2) ; Test Items Name _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][4], 3) ; Low Limit _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][5], 4) ; Upper Limit _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][6], 5) ; Unit _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][7], 8) ; Retest Time ;~ _GUICtrlListView_AddSubItem($ListViewTbl, $r, $aTestItemData[$r][8], 9) ; Fail Goto If StringCompare($aTestItemData[$r][1], "TRUE") = 0 Then _GUICtrlListView_SetItemChecked($ListViewTbl, $r) If StringCompare($aTestItemData[$r][1], "●") = 0 Then _GUICtrlListView_SetItemChecked($ListViewTbl, $r) Next ;~ _GUICtrlListView_AddArray _ClearFuncSub() ;_UpdateListViewHandler() EndFunc Func _ClearListViewResult() For $r = 0 To UBound($aTestItemData) - 1 $aTestItemData[$r][1] = _GUICtrlListView_GetItemChecked($ListViewTbl, $r) _GUICtrlListView_AddSubItem($ListViewTbl, $r, "", 6) ; Unit _GUICtrlListView_AddSubItem($ListViewTbl, $r, "", 7) ; Retest Time If $ScriptChange = 0 Then If UBound($aOriTestItemData) = UBound($aTestItemData) Then If StringCompare($aOriTestItemData[$r][1], $aTestItemData[$r][1]) <> 0 Then $ScriptChange = 1 Else $ScriptChange = 1 EndIf EndIf Next EndFunc Func _ArrayClearRow($Row) For $c = 1 To UBound($aTestItemData, 2)-1 $aTestItemData[$Row][$c] = "" Next EndFunc Func _ArrayGetData($Row) Local $Rtn[UBound($aTestItemData, 2)] For $c = 1 To UBound($aTestItemData, 2)-1 $Rtn[$c] = $aTestItemData[$Row][$c] Next Return $Rtn EndFunc Func _ArrayInsertData($Row, $aData) For $c = 1 To UBound($aTestItemData, 2)-1 If UBound($aTestItemData, 2) <> UBound($aData) Then ExitLoop $aTestItemData[$Row][$c] = $aData[$c] Next EndFunc Func _FixRowNo_Date() For $No = 0 To UBound($aTestItemData)-1 $aTestItemData[$No][0] = $No+1 $aTestItemData[$No][UBound($aTestItemData, 2)-2] = _NowCalc() ; last 2nd column is Date & Time Next ;~ _DebugArrayDisplay($aTestItemData, "$aTestItemData") EndFunc Func StatusWrite($sMessage) ; Write status or action log message into Status Bar GUICtrlSetData($Status[1], "") GUICtrlSetData($Status[1], " " & $sMessage) EndFunc Func DateTime() If StringCompare(GUICtrlRead($Status[2]), _NowCalc()) <> 0 Then GUICtrlSetData($Status[2], _NowCalc()) EndIf EndFunc Func _UUTNoCombo() $Rtn = "" For $i = 1 To $UUTMax $Rtn &= $i &"|" Next ;ConsoleWrite($Rtn & @CRLF) Return $Rtn EndFunc ; use _SetItemParam() with defaults to set off ; to mark an SubItem as set, 2^SubItem-index are stored in ItemParam as sum for all SubItem, ; so the max. count of columns are 31 !! Func _SetItemParam($hWnd, $iItem, $iSubItem, $iBkCol=-1, $iCol=-1, $iSize=-1, $iWeight=-1, $sFont=-1) Local $accArray, $sumParam = 0 ;ConsoleWrite("_SetItemParam>>" & $iItem & " - " & $iSubItem & @CRLF) For $i = 0 To UBound($ahWndSets) -1 If $ahWndSets[$i][0] = $hWnd Then $accArray = $ahWndSets[$i][1] ; temp array ExitLoop EndIf Next If $iBkCol = -1 Then $iBkCol = $defBkColLV $sumParam += 1 EndIf If $iCol = -1 Then $iCol = $defColLV $sumParam += 1 EndIf If $iSize = -1 Then $iSize = 14 $sumParam += 1 EndIf If $iWeight = -1 Then $iWeight = 400 $sumParam += 1 EndIf If $sFont = -1 Then $sFont = 'Arial' $sumParam += 1 EndIf $accArray[$iItem][$iSubItem][0] = $iBkCol $accArray[$iItem][$iSubItem][1] = $iCol $accArray[$iItem][$iSubItem][2] = $iSize $accArray[$iItem][$iSubItem][3] = $iWeight $accArray[$iItem][$iSubItem][4] = $sFont $ahWndSets[$i][1] = $accArray ; write back to original array ; if SubItem not registered in IParam OR all values by -1 (delete Sub from IParam) ==> switch Sub value in IParam If ( Not BitAND(__GUICtrlListView_GetItemParam($hWnd, $iItem), 2^$iSubItem) ) Or ( $sumParam = 5 ) Then _ __GUICtrlListView_SetItemParam($hWnd, $iItem, BitXOR(__GUICtrlListView_GetItemParam($hWnd, $iItem), 2^$iSubItem)) If BitAND(__GUICtrlListView_GetItemParam($hWnd, $iItem), 2^$iSubItem) Then _WinAPI_InvalidateRect($hWnd) ; only if values changed EndFunc ;==>_SetItemParam Func __GUICtrlListView_GetItemParam($hWnd, $iItem) ; modified for use indexshift Local $param = _GUICtrlListView_GetItemParam($hWnd, $iItem) If $param > 0 Then $param -= $INDEXSHIFT Return $param EndFunc Func __GUICtrlListView_SetItemParam($hWnd, $iItem, $iParam) ; modified for use indexshift _GUICtrlListView_SetItemParam($hWnd, $iItem, $INDEXSHIFT + $iParam) EndFunc Func _DrawItemCol(ByRef $hDC, ByRef $tCustDraw, $hWnd, $iItem, $iSubitem) Local $accArray For $i = 0 To UBound($ahWndSets) -1 If $ahWndSets[$i][0] = $hWnd Then $accArray = $ahWndSets[$i][1] ExitLoop EndIf Next Local $aDefFont[14] = [14,0,0,0,$FW_NORMAL,False,False,False, _ $DEFAULT_CHARSET,$OUT_DEFAULT_PRECIS,$CLIP_DEFAULT_PRECIS,$DEFAULT_QUALITY,0,'Arial'] $aDefFont[0] = $accArray[$iItem][$iSubItem][2] $aDefFont[4] = $accArray[$iItem][$iSubItem][3] $aDefFont[13] = $accArray[$iItem][$iSubItem][4] $hDC = DllStructGetData($tCustDraw, 'hdc') DllStructSetData($tCustDraw, 'clrText', RGB2BGR($accArray[$iItem][$iSubItem][1])) DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($accArray[$iItem][$iSubItem][0])) $hFont = _WinAPI_CreateFont($aDefFont[0],$aDefFont[1],$aDefFont[2],$aDefFont[3],$aDefFont[4],$aDefFont[5],$aDefFont[6], _ $aDefFont[7],$aDefFont[8],$aDefFont[9],$aDefFont[10],$aDefFont[11],$aDefFont[12],$aDefFont[13]) _WinAPI_SelectObject($hDC, $hFont) EndFunc ;==>_DrawItemCol Func _DrawDefault(ByRef $hDC, ByRef $tCustDraw) ; draw unformatted item $hDC = DllStructGetData($tCustDraw, 'hdc') DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV)) DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($defBkColLV)) $hFont = _WinAPI_CreateFont(14,0,0,0,$FW_NORMAL,False,False,False,$DEFAULT_CHARSET,$OUT_DEFAULT_PRECIS, _ $CLIP_DEFAULT_PRECIS,$DEFAULT_QUALITY,0,'Arial') _WinAPI_SelectObject($hDC, $hFont) EndFunc ;==>_DrawDefault Func RGB2BGR($iColor) Local $sH = Hex($iColor,6) Return '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2) EndFunc ;==>RGB2BGR Func _UpdateListViewHandler() ReDim $aLV1[_GUICtrlListView_GetItemCount($hListView)][_GUICtrlListView_GetColumnCount($hListView)][5] ; create array to hold ListView-handle and accordingly array $ahWndSets[0][0] = $hListView $ahWndSets[0][1] = $aLV1 EndFunc ; User access setup Func _UserAccessSetting($AccessRight) Switch $AccessRight Case 4 _DisableAllBtn() GUICtrlSetState($ToolsBtn[13], $GUI_ENABLE) GUICtrlSetState($ToolsBtn[2], $GUI_ENABLE) ; Toolbar Button For $r = 1 To 9 If $r <> 2 Then GUICtrlSetImage($ToolsBtn[$r], $ToolsIco[$r+13]) Next ;GUICtrlSetImage($ToolsBtn[13], $ToolsIco[26]) EndSwitch EndFunc Attach is the main page code, thanks for the help in advance. Edited November 2, 2023 by alankam58 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now