谁能给个listview的分页显示的例子 ||||基本好了`非常感谢afan [已解决]
本帖最后由 410521a 于 2010-7-1 20:42 编辑谁能给个listview的分页显示的例子``最好有注释~谢谢
比如果读取INI文件后显示50条数据`` 点下一页后再显示后50条`` 以此类推
如果有方法一下把INI里边的数据读出来也行`` 这样一条一条的太慢了`` 好像还没有人做出来????? 哎!生病在家休息,趴在床上简单写了个例子,写得有点乱,将就看吧!
脚本和下面的INI文件,放在同目录下运行即可!#include <GuiListView.au3>
#include <WindowsConstants.au3>
Local $iChange = 20, $iNumber1 = 1, $iNumber2 = $iChange ;变量 $iChange 是每页显示多少个项目
Local $bTf = True
$var = IniReadSection(@ScriptDir & '\Config.ini', 'Config')
If @error Then
MsgBox(48, "出错!", "发生错误,INI文件读取失败!") ;INI文件读取错误将退出
Exit
EndIf
GUICreate("Form1", 400, 450)
$ListView1 = GUICtrlCreateListView("编号|内容", 5, 5, 390, 380, -1, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_REPORT))
_GUICtrlListView_SetColumnWidth($ListView1, 0, 100)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 280)
$Button1 = GUICtrlCreateButton("上一页", 80, 400, 80, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton("下一页", 250, 400, 80, 30, $WS_GROUP)
Read($iNumber1, $iNumber2) ;首次读取
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
Exit
Case $Button1 ;上一页
$bTf = True
If $iNumber2 - $iChange < 1 Then ;这里判断是否到了第一页
$iNumber1 = 1
$iNumber2 = $iChange
MsgBox(0, '提示!', '这里是第一页')
Else
$iNumber1 -= $iChange
$iNumber2 -= $iChange
Read($iNumber1, $iNumber2)
EndIf
Case $Button2 ;下一页
If $iNumber2 + $iChange > UBound($var) - 1 Then ;这里判读是否到了最后一页
If $bTf = True Then
Read($iNumber1 + $iChange, UBound($var) - 1)
$iNumber1 += $iChange
$iNumber2 += $iChange
$bTf = False
Else
MsgBox(0, '提示!', '这里是最后一页')
EndIf
Else
$iNumber1 += $iChange
$iNumber2 += $iChange
Read($iNumber1, $iNumber2)
EndIf
EndSwitch
WEnd
Func Read($iNo1, $iNo2)
_GUICtrlListView_DeleteAllItems($ListView1)
For $i = $iNo1 To $iNo2
GUICtrlCreateListViewItem($var[$i] & '|' & $var[$i], $ListView1)
Next
EndFunc ;==>Read 水木子真是强人!小弟实在是太佩服了! 向高手学习。。好例子,,拿下。。3Q 多谢水木子`` 愿早日康复`` 我也有点小感冒哎` `吹空调吹的了`` `这天真不想让人活了 看来感冒的还真不少,我也吃了几天的药了,还在咳嗽~ 大家要注意身体呀~ 首页尾页呢? 回复 8# 410521a
你的意思是直接一键到首页或尾页吗?
仔细看其实很容易理解的, Read($iNumber1, $iNumber2) 这个就是首页
尾页只需稍作修改既可以。 本帖最后由 afan 于 2010-6-30 15:33 编辑
拿木子童鞋的改一下不就行了,自己动动手嘛
哎水平有限`` 没弄成功`` 添加到我的代码里边总是提示Func Read($iNo1, $iNo2)
afan能否共享下你修改的代码`` 谢谢 高手如云呀` `就我菜`` 哎水平有限`` 没弄成功`` 添加到我的代码里边总是提示Func Read($iNo1, $iNo2)
afan能否共享下你修改 ...
410521a 发表于 2010-6-30 16:37 http://www.autoitx.com/images/common/back.gif
自己动过手再看答案会有不一样的感觉~#include <GuiListView.au3>
#include <WindowsConstants.au3>
$var = IniReadSection(@ScriptDir & '\Config.ini', 'Config')
If @error Then Exit MsgBox(48, "出错!", "发生错误,INI文件读取失败!") ;INI文件读取错误将退出
Dim $iChange = 25, $dqyc = 1 ;$iChange 每页显示多少个项目;$dqyc 为当前页次
Dim $zys = Ceiling($var / $iChange)
GUICreate("Listview分页显示", 400, 450)
$ListView1 = GUICtrlCreateListView("编号|内容", 5, 5, 390, 380, -1, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_REPORT))
_GUICtrlListView_SetColumnWidth($ListView1, 0, 100)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 280)
$Button1 = GUICtrlCreateButton("<", 110, 400, 30, 22)
$Button2 = GUICtrlCreateButton(">", 190, 400, 30, 22)
$Label = GUICtrlCreateLabel('1', 143, 405, 18, 17, 0x0002)
GUICtrlCreateLabel('/' & $zys, 162, 405, 23, 17)
$Button3 = GUICtrlCreateButton("返回首页", 30, 400, 80, 22)
$Button4 = GUICtrlCreateButton("跳至尾页", 220, 400, 80, 22)
$Combo = GUICtrlCreateCombo('', 305, 402, 60, 22)
$Combodata = ''
For $i = 1 To $zys
$Combodata &= '第' & $i & '页|'
Next
GUICtrlSetData(-1, $Combodata, '第1页')
GUISetState()
Go(1) ;首次读取
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1 ;上一页
Go($dqyc - 1)
Case $Button2 ;下一页
Go($dqyc + 1)
Case $Button3 ;首页
Go(1)
Case $Button4 ;尾页
Go($zys)
Case $Combo ;下拉选择页次
Go(StringRegExpReplace(GUICtrlRead($Combo), '[^\d]', ''))
EndSwitch
WEnd
Func Go($yc)
Local $iNo1 = ($yc - 1) * $iChange + 1
Local $iNo2
If $yc = $zys Then
$iNo2 = $var
SetState(64, 128, 64, 128)
ElseIf $yc = 1 Then
$iNo2 = $iNo1 + $iChange - 1
SetState(128, 64, 128, 64)
Else
$iNo2 = $iNo1 + $iChange - 1
SetState(64, 64, 64, 64)
EndIf
Read($iNo1, $iNo2)
GUICtrlSetData($Label, $yc)
GUICtrlSetData($Combo, '第' & $yc & '页')
$dqyc = $yc
EndFunc ;==>Go
Func SetState($1, $2, $3, $4)
GUICtrlSetState($Button1, $1)
GUICtrlSetState($Button2, $2)
GUICtrlSetState($Button3, $3)
GUICtrlSetState($Button4, $4)
EndFunc ;==>SetState
Func Read($iNo1, $iNo2)
_GUICtrlListView_DeleteAllItems($ListView1)
For $i = $iNo1 To $iNo2
GUICtrlCreateListViewItem($var[$i] & '|' & $var[$i], $ListView1)
Next
EndFunc ;==>Read 谢谢,楼主是个好人{:face (249):} 真是个大好人` 麻烦再问下``样式 $BS_FLAT为什么不管用