listview 選定項目問題...防呆措施...求防呆思路
本帖最后由 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 Then
MsgBox(0,"操作錯誤","請於左邊通報清單中選擇要加入的紀錄",2)
$Check1="1"
EndIf
If $Check1="0" Then
FOR $i=1 TO $ItemList 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) ; 使窗口重新可用 谁知道你是怎么加入的 回复 2# afan
代碼很長.....所以我挑重點 秀出來.....其實我寫的很基本而已....所以才在想是不是有更好的防呆方式......
$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 Then
MsgBox(0,"操作錯誤","請於左邊通報清單中選擇要加入的紀錄",2)
$Check1="1"
EndIf
If $Check1="0" Then
FOR $i=1 TO $ItemList 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) ; 使窗口重新可用 _GUICtrlListView_CopyItems() 另外,第二个图问题源于你的样式缺少 $LVS_SHOWSELALWAYSGUICtrlCreateListView("編號 (清單)|客戶簡稱(清單) ", 200, 70, 250, 250, $LVS_REPORT + $LVS_SHOWSELALWAYS) afan居然看明白lz问什么了,佩服 确实 有这个问题,没有深入研究,等答案..学习.. afan居然看明白lz问什么了,佩服
netegg 发表于 2012-2-24 01:12 http://www.autoitx.com/images/common/back.gif
“這時候 使用者 突然後按了 右手邊的 LISTVIEW 畫面後” 这句话看得我眼前瞬间有了 迅雷不及掩耳盗铃 的画面 回复 8# afan
{:face (356):} 表達的不好請多見諒.....順便在請問一下.....有人 LISTVIEW可以做到 兩個 不同的 LISTVIEW使用拖曳的方式 移動到 另外一個表嗎?? 回复 9# kk_lee69
列表互换还是仅数据转移 都是繁体字哦。 回复 10# netegg
都可以 我的用意 很簡單.....讓使用者方便操作....鈀資料從左邊的LISTVIEW 移動到 右邊的.....
等使用者 選擇完畢後......必須要按下 更新 或者其他按鈕......在去讀取 右手邊的LISTVIEW 資料 回寫到資料庫裡面 $item = _guictrllistview_getselect($listleft)
$num = _guictrllistview_getitemcount($listright)
$aItem = _guictrllistview_getitemTextArray($listleft, $item)
_guictrllistview_additem($listright, $aItem, $num+1)
_guictrllistview_addsubitem($listright, $num+1, $aItem,1)
.... 回复 13# netegg
了解 感謝 回覆 我研究看看
页:
[1]