找回密码
 加入
搜索
查看: 40514|回复: 115

[GUI管理] 谁能给个listview的分页显示的例子 ||||基本好了`非常感谢afan [已解决]

 火... [复制链接]
发表于 2010-6-29 21:35:09 | 显示全部楼层 |阅读模式
本帖最后由 410521a 于 2010-7-1 20:42 编辑

谁能给个listview的分页显示的例子``最好有注释~谢谢

比如果读取INI文件后显示50条数据`` 点下一页后再显示后50条`` 以此类推

如果有方法一下把INI里边的数据读出来也行`` 这样一条一条的太慢了``

评分

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

查看全部评分

发表于 2010-6-30 00:10:38 | 显示全部楼层
好像还没有人做出来?????
发表于 2010-6-30 11:00:06 | 显示全部楼层
哎!生病在家休息,趴在床上简单写了个例子,写得有点乱,将就看吧!
脚本和下面的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][0] & '|' & $var[$i][1], $ListView1)
        Next
EndFunc   ;==>Read

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 3威望 +5 金钱 +100 贡献 +7 收起 理由
lynfr8 + 5
afan + 5 威武之躯
hzxymkb + 100 + 2 生病了还写程序!精神值得表扬!加分!

查看全部评分

发表于 2010-6-30 11:18:21 | 显示全部楼层
水木子真是强人!小弟实在是太佩服了!
发表于 2010-6-30 11:43:30 | 显示全部楼层
向高手学习。。好例子,,拿下。。3Q
 楼主| 发表于 2010-6-30 13:19:21 | 显示全部楼层
多谢水木子`` 愿早日康复`` 我也有点小感冒  哎` `吹空调吹的了`` `这天真不想让人活了
发表于 2010-6-30 13:26:53 | 显示全部楼层
看来感冒的还真不少,我也吃了几天的药了,还在咳嗽~ 大家要注意身体呀~
 楼主| 发表于 2010-6-30 13:30:48 | 显示全部楼层
首页  尾页呢?
发表于 2010-6-30 13:55:26 | 显示全部楼层
回复 8# 410521a

你的意思是直接一键到首页或尾页吗?

仔细看其实很容易理解的, Read($iNumber1, $iNumber2) 这个就是首页

尾页只需稍作修改既可以。
发表于 2010-6-30 15:07:32 | 显示全部楼层
本帖最后由 afan 于 2010-6-30 15:33 编辑

拿木子童鞋的改一下不就行了,自己动动手嘛

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 3金钱 +90 贡献 +5 收起 理由
hzxymkb + 50 太强大了!
rikthhpgf2005 + 10 + 5 细化了!!!
水木子 + 30 相当厉害,小弟实在佩服。

查看全部评分

 楼主| 发表于 2010-6-30 16:37:16 | 显示全部楼层
哎水平有限`` 没弄成功`` 添加到我的代码里边总是提示  Func Read($iNo1, $iNo2)

afan  能否共享下你修改的代码`` 谢谢
 楼主| 发表于 2010-6-30 16:38:26 | 显示全部楼层
高手如云呀` `就我菜``
发表于 2010-6-30 16:50:19 | 显示全部楼层
哎水平有限`` 没弄成功`` 添加到我的代码里边总是提示  Func Read($iNo1, $iNo2)

afan  能否共享下你修改 ...
410521a 发表于 2010-6-30 16:37


自己动过手再看答案会有不一样的感觉~
#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[0][0] / $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[0][0]
                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][0] & '|' & $var[$i][1], $ListView1)
        Next
EndFunc   ;==>Read

评分

参与人数 2贡献 +10 收起 理由
hzxymkb + 5 感谢分享精品!
lynfr8 + 5

查看全部评分

发表于 2010-6-30 16:51:09 | 显示全部楼层
谢谢,楼主是个好人
 楼主| 发表于 2010-6-30 17:07:13 | 显示全部楼层
真是个大好人` 麻烦再问下``样式 $BS_FLAT  为什么不管用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 03:43 , Processed in 0.094707 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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