本帖最后由 kk_lee69 于 2012-2-23 23:53 编辑
我做了一個 兩個 LISTVIE 的畫面 如下圖......但是問題來了......有幾個防呆問題我無法解決......
當你選定了 左手邊的 某個項目......... 這時候 使用者 突然後按了 右手邊的 LISTVIEW 畫面後.........整個畫面會變成........
也就是說 使用者可能會以為......右手邊的畫面 並沒有被選擇......但是 這時候 他按下 加入................程式也可以把剛剛選定的加入進去.................如下圖
另外一種情況是 如下圖.....使者者....本來選了一個 後來不想要了....於是在紅色圈圈的地方按一下.....整個畫面就會變成 下面的圖案......這時候 加入 一樣有作用
能夠解決這個防呆問題嗎?? 我的目的是 要把系統鎖的更嚴格...... 也就是說使用者 不是 選了 左手邊的畫面 馬上案加入.....我就打算讓 他重新選擇.....能做到嗎??
代碼很長.....所以我挑重點 秀出來.....其實我寫的很基本而已....所以才在想是不是有更好的防呆方式......
$listview1 = GUICtrlCreateListView("編號 (清單)|客戶簡稱 (清單) ", 200, 70, 250, 250,$lvs_report)
$listview2 = GUICtrlCreateListView("編號 (顯示)|客戶簡稱 (在報表顯示) ", 540, 70, 250, 250,$lvs_report)
加入的 語法
Case $add1
GuiSetState(@SW_DISABLE,$WinMain) ; 禁用視窗,以防用戶作出其他更改
$ItemList = _GUICtrlListView_GetSelectedIndices($ListView1,True)
_ArrayDisplay($ItemList)
;MsgBox(0,"",_GUICtrlListView_GetSelectedIndices($ListView1))
;Exit
;$ChID=StringLeft(GUICtrlRead(GUICtrlRead($ListView1)),StringInStr(GUICtrlRead(GUICtrlRead($ListView1)),"|")-1)
IF $ItemList[0]=0 Then
MsgBox(0,"操作錯誤","請於左邊通報清單中選擇 要加入的紀錄",2)
$Check1="1"
EndIf
If $Check1="0" Then
FOR $i=1 TO $ItemList[0] Step 1
$LISTA=_GUICtrlListView_GetItemTextString($ListView1,$ItemList[$i])
If StringInStr($ProdSTR,StringLeft($LISTA,StringInStr($LISTA,"|",0,1)-1),0,1)=0 Then
$ProdSTR = $ProdSTR&":"&StringLeft($LISTA,StringInStr($LISTA,"|",0,1)-1)
;MsgBox(0,"",$ProdSTR)
GUICtrlCreateListViewItem($LISTA, $listview2)
_GUICtrlListView_DeleteItem($ListView1,$ItemList[$i])
Else
MsgBox(0,"錯誤","產品已經在報表清單中",1)
EndIf
Next
;MsgBox(0,"A",GUICtrlRead(GUICtrlRead($ListView5)))
;GUICtrlCreateListViewItem(GUICtrlRead(GUICtrlRead($ListView1)), $listview2)
;_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($listview1))
;$CustSTR=$CustSTR&"CustID='"&$ChID&"' or "
;MsgBox(0,"A",$CustSTR)
EndIf
$Check1 = "0"
WinActivate($WinMain,"")
GuiSetState(@SW_ENABLE,$WinMain) ; 使窗口重新可用
|