找回密码
 加入
搜索
查看: 2149|回复: 11

图标转换二进制写入数据库

  [复制链接]
发表于 2018-5-27 19:58:00 | 显示全部楼层 |阅读模式
本帖最后由 chzj589 于 2018-5-29 08:54 编辑

图标转换二进制写入数据库,并读取显示于ListView列表
感谢K版的帮助
无聊,写着玩。
其实如果数据多的话,要显示图标会让读取的速度很慢。

本帖子中包含更多资源

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

×
发表于 2018-5-28 01:13:00 | 显示全部楼层
回复 1# chzj589

你一定是 每次顯示都重新讀取

這樣當然會慢

你應該 是單純的 存ICO 檔案 然後在一開始就讀取 做成 IMAGELIST 然後 LISTVIEW 只是取用IMAGELIST
 楼主| 发表于 2018-5-28 08:14:28 | 显示全部楼层
回复  chzj589

你一定是 每次顯示都重新讀取

這樣當然會慢

你應該 是單純的 存ICO 檔案 然後在一 ...
kk_lee69 发表于 2018-5-28 01:13

做成 IMAGELIST?不懂,能解释一下?
发表于 2018-5-28 09:24:38 | 显示全部楼层
回复 3# chzj589


    _GUIImageList_Create
 楼主| 发表于 2018-5-28 09:44:15 | 显示全部楼层
回复  chzj589
    _GUIImageList_Create
kk_lee69 发表于 2018-5-28 09:24

我就是用:
$hImage = _GUIImageList_Create(20, 20)
读取显示要用:
_GUICtrlListView_AddItem($GListView1, $RS.Fields(0).value, 0)
_GUICtrlListView_AddSubItem($GListView1, $i, $RS.Fields(1).value, 1, 0)
_GUICtrlListView_AddSubItem($GListView1, $i, $RS.Fields(2).value, 2,1)
_GUICtrlListView_AddSubItem($GListView1, $i, $RS.Fields(3).value, 3, 2)
不能用数组读取显示,所以显示慢。有别的方法?
发表于 2018-5-28 10:07:57 | 显示全部楼层
回复 5# chzj589

可以看看你的程式嗎??  給我看一下你怎麼寫的
 楼主| 发表于 2018-5-28 10:19:41 | 显示全部楼层
回复 6# kk_lee69

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Local $yel = "90" ;总和
Local $ye2 = "80" ;总和
Local $ye3 = "70"
Local $i = 0
Local $idListview, $hImage
Example()

Func Example()

        ; Local $sWow64 = ""
        ;If @AutoItX64 Then $sWow64 = "\Wow6432Node"
        ; Local $sAutoItDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt", "InstallDir")

        $hGUI = GUICreate("ImageList 复制图像", 410, 300)
        $idListview = GUICtrlCreateListView("", 2, 2, 404, 268, $LVS_REPORT, $WS_EX_CLIENTEDGE);;, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
        _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_INFOTIP, $LVS_EX_SUBITEMIMAGES))
        GUISetState(@SW_SHOW)
        ; 创建图像图像列表和图像
        $hImage = _GUIImageList_Create(20, 20)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\AAA.ICO") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\223.ico") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\C01.ico") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\linea.ico") & @CRLF)
        _GUIImageList_Copy($hImage, 0, 1)
        _GUICtrlListView_SetImageList($idListview, $hImage, 1)
        ; 添加列
        _GUICtrlListView_AddColumn($idListview, "列 1", 100, 1, 1, True)
        _GUICtrlListView_AddColumn($idListview, "列 2", 100, 0, 0, True)
        _GUICtrlListView_AddColumn($idListview, "列 3", 100, 2, 2, True)
        _GUICtrlListView_AddColumn($idListview, "列 4", 100, 0, 3)
        _du()
        ; 循环到用户退出.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
EndFunc   ;==>Example
Func _du()
        $hImage = _GUIImageList_Create(20, 20)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\AAA.ICO") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\223.ico") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\C01.ico") & @CRLF)
        ConsoleWrite(_GUIImageList_AddIcon($hImage, @ScriptDir & "\linea.ico") & @CRLF)
        ;_GUIImageList_Copy($hImage, 0, 1)
        _GUICtrlListView_SetImageList($idListview, $hImage, 1)
        For $ii = 0 To 3
                _GUICtrlListView_AddItem($idListview, $i, 0)
                _GUICtrlListView_AddSubItem($idListview, $i, $yel, 1, 1)
                _GUICtrlListView_AddSubItem($idListview, $i, $ye2, 2, 2)
                _GUICtrlListView_AddSubItem($idListview, $i, $ye3, 3, 3)
                $i += 1
        Next
EndFunc   ;==>_du
发表于 2018-5-28 12:13:29 | 显示全部楼层
好像图标都有底色,老哥需要改改这类细节问题,呵呵~
 楼主| 发表于 2018-5-28 13:16:52 | 显示全部楼层
好像图标都有底色,老哥需要改改这类细节问题,呵呵~
afan 发表于 2018-5-28 12:13

谢谢提醒!
ListView列表加上背景色就有这个问题,正常图标的底色是白色
发表于 2018-5-28 13:20:21 | 显示全部楼层
回复 9# chzj589

我沒看到 你從資料庫裏面把資料取出來  另外        $hImage = _GUIImageList_Create(20, 20)

為什麼要做兩次 我也搞不懂
 楼主| 发表于 2018-5-28 13:32:17 | 显示全部楼层
本帖最后由 chzj589 于 2018-5-28 13:34 编辑
回复  chzj589

我沒看到 你從資料庫裏面把資料取出來  另外        $hImage = _GUIImageList_Create(20 ...
kk_lee69 发表于 2018-5-28 13:20

$hImage = _GUIImageList_Create(20, 20)
做兩次:
1:图标显示Listview列表项目
2:图标显示Listview列表子项目
读取:

Local $i = 0
        While (Not $RS.eof And Not $RS.bof);
        ;For $ii = 0 To 3
                _GUICtrlListView_AddItem($idListview, $RS.Fields(0).value, 0)
                _GUICtrlListView_AddSubItem($idListview, $i, $RS.Fields(1).value, 1, 1)
                _GUICtrlListView_AddSubItem($idListview, $i, $RS.Fields(2).value, 2, 2)
                _GUICtrlListView_AddSubItem($idListview, $i, $RS.Fields(3).value, 3, 3)
                $i += 1
        ;Next
                $RS.movenext
        WEnd
能用另外的方式读取吗?
发表于 2018-5-28 13:52:08 | 显示全部楼层
這樣放本來就會慢

你看我給你的範例........  先讀取圖檔  在設置清單即可.......
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-25 05:16 , Processed in 0.076000 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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