找回密码
 加入
搜索
查看: 6049|回复: 7

[系统综合] 以下代码功能,用GUICtrlCreateList控件如何实现?[已解决]

  [复制链接]
发表于 2010-10-16 14:57:00 | 显示全部楼层 |阅读模式
本帖最后由 dhh45 于 2010-10-19 09:06 编辑

以下代码功能,用GUICtrlCreateList控件如何实现?
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <GUIListview.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 192, 114)
$List1 = GUICtrlCreateListView("", 72, 56, 105, 188)
_GUICtrlListView_AddItem($List1,"test1",0)
_GUICtrlListView_AddItem($List1,"test2",1)
_GUICtrlListView_AddItem($List1,"test3",2)
_GUICtrlListView_AddItem($List1,"test4",3)
_GUICtrlListView_AddItem($List1,"test5",4)
_GUICtrlListView_AddItem($List1,"test6",5)
_GUICtrlListView_AddItem($List1,"test7",6)
_GUICtrlListView_AddItem($List1,"test8",7)

GUICtrlSetStyle($List1,BitOR($lvs_list,$lvs_showselalways))


$Button1 = GUICtrlCreateButton(">", 216, 64, 89, 33)
$Button2 = GUICtrlCreateButton("<", 216, 112, 89, 33)
$Button3 = GUICtrlCreateButton(">>", 216, 160, 89, 41)
$List2 = GUICtrlCreateListView("", 344, 64, 113, 175)
GUICtrlSetStyle($List2,BitOR($lvs_list,$lvs_showselalways))
$Button4 = GUICtrlCreateButton("<<", 216, 208, 89, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                                                _GUICtrlListView_CopyItems(GUICtrlGetHandle($List1),GUICtrlGetHandle($List2),True)
                Case $Button2
                      _GUICtrlListView_CopyItems(GUICtrlGetHandle($List2),GUICtrlGetHandle($List1),True)
                                Case $Button3
                                          $dd=""
                                          $dd=_GUICtrlListView_GetItemCount(GUICtrlGetHandle($List1))
                                          For $i=0 To $dd-1
                                                  _GUICtrlListView_SetItemSelected(GUICtrlGetHandle($List1),$i,True)
                                          Next
                                         _GUICtrlListView_CopyItems(GUICtrlGetHandle($List1),GUICtrlGetHandle($List2),True)
                                 Case $Button4
                                          $dd=""
                                          $dd=_GUICtrlListView_GetItemCount(GUICtrlGetHandle($List2))
                                          For $i=0 To $dd-1
                                                  _GUICtrlListView_SetItemSelected(GUICtrlGetHandle($List2),$i,True)
                                          Next
                                         _GUICtrlListView_CopyItems(GUICtrlGetHandle($List2),GUICtrlGetHandle($List1),True)
        EndSwitch
WEnd

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-10-18 10:22:37 | 显示全部楼层
大家没有看见,还是……
发表于 2010-10-18 13:33:07 | 显示全部楼层
没人回答是因为你完全没有经过自己思考,只想着要求源码。
给你一段代码,没写完整。自己补全吧。
;#include <ButtonConstants.au3>
;#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
;#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 192, 114)
$Listbox=_GUICtrlListBox_Create($Form1, "", 72, 56, 105, 188)
_GUICtrlListBox_BeginUpdate($Listbox)
For $i = 1 To 9
        _GUICtrlListBox_AddString($ListBox, 'Test'&$i)
Next
_GUICtrlListBox_EndUpdate($Listbox)

$Button1 = GUICtrlCreateButton(">", 216, 64, 89, 33)
$Button2 = GUICtrlCreateButton("<", 216, 112, 89, 33)
$Button3 = GUICtrlCreateButton(">>", 216, 160, 89, 41)
$Button4 = GUICtrlCreateButton("<<", 216, 208, 89, 41)
$Listbox2=_GUICtrlListBox_Create($Form1, "", 344, 64, 113, 175)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $index=_GUICtrlListBox_GetCurSel($ListBox)
                        If $index=-1 Then $index=0
                        $text=_GUICtrlListBox_GetText($ListBox, $index)
                        MsgBox(0,0,$text)
                        _GUICtrlListBox_BeginUpdate($Listbox2)
                        _GUICtrlListBox_AddString($ListBox2, $text)
                        _GUICtrlListBox_EndUpdate($Listbox2)
                        _GUICtrlListBox_DeleteString($ListBox,$index)
                Case $Button2
                        ;与$BUTTON1雷同
                Case $Button3
                        ;与$BUTTON1雷同
                Case $Button4
                        ;与$BUTTON1雷同
        EndSwitch
WEnd
 楼主| 发表于 2010-10-18 15:47:28 | 显示全部楼层
回复 3# 3mile
不是等着大家的代码,而是真的有困难。
您的代码只实现了选择单个记录转移,没有实现多选转移,这个是难点
我还在研究……
发表于 2010-10-18 16:27:57 | 显示全部楼层
回复 4# dhh45
_GUICtrlListBox_GetCount
 楼主| 发表于 2010-10-18 16:43:42 | 显示全部楼层
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 192, 114)
$List1 = GUICtrlCreateList("", 32, 16, 569, 136,BitOR($ws_border,$ws_vscroll,$lbs_notify,$lbs_disablenoscroll,$ws_hscroll,$lbs_extendedsel))
$List2 = GUICtrlCreateList("", 40, 264, 569, 149,BitOR($ws_border,$ws_vscroll,$lbs_notify,$lbs_disablenoscroll,$ws_hscroll,$lbs_extendedsel))
$Button1 = GUICtrlCreateButton("向下", 48, 184, 65, 33)
$Button2 = GUICtrlCreateButton("全向下", 136, 184, 65, 33)
$Button3 = GUICtrlCreateButton("向上", 224, 184, 73, 33)
$Button4 = GUICtrlCreateButton("全向上", 328, 184, 73, 33)
$Button5 = GUICtrlCreateButton("清空", 432, 184, 81, 41)
For  $i=1  To 12
_GUICtrlListBox_InsertString(GUICtrlGetHandle($List1), "test"&$i,$i-1)
Next
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        SingalSelect($List1,$List2)
                Case $Button2
                        AllSelect($List1,$List2)
                Case $Button3
                        SingalSelect($List2,$List1)
                Case $Button4
                        AllSelect($List2,$List1)
                Case $Button5
                        _GUICtrlListBox_ResetContent (GUICtrlGetHandle($List1))
                        _GUICtrlListBox_ResetContent (GUICtrlGetHandle($List2))
        EndSwitch
WEnd

Func SingalSelect($S,$D)
        $aa=""
        $bb=""
        $aa=_GUICtrlListBox_GetSelItemsText(GUICtrlGetHandle($S))
        $bb=_GUICtrlListBox_GetSelItems(GUICtrlGetHandle($S))
        For $i=1 To $aa[0]
                _GUICtrlListBox_AddString(GUICtrlGetHandle($D),$aa[$i])
        Next
        For $i=1 To $aa[0]
                _GUICtrlListBox_ReplaceString(GUICtrlGetHandle($S),$bb[$i],"temp")
        Next
        $count=_GUICtrlListBox_GetCount(GUICtrlGetHandle($S))
        For $i=1 To $count
                _GUICtrlListBox_DeleteString(GUICtrlGetHandle($S),_GUICtrlListBox_FindString(GUICtrlGetHandle($S),"temp",True))
        Next
EndFunc

Func AllSelect($s,$d)
        $count=_GUICtrlListBox_GetCount(GUICtrlGetHandle($S))
        For $i=0 To $count-1
                _GUICtrlListBox_AddString(GUICtrlGetHandle($d),_GUICtrlListBox_GetText(GUICtrlGetHandle($S),$i))
        Next
        _GUICtrlListBox_ResetContent (GUICtrlGetHandle($S))
EndFunc
发表于 2012-7-20 10:45:50 | 显示全部楼层
留着以后用
发表于 2014-5-3 20:22:23 | 显示全部楼层
雷锋精神传天下!谢谢分享!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 23:48 , Processed in 0.235491 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表