chzj589 发表于 2018-5-27 19:58:00

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

本帖最后由 chzj589 于 2018-5-29 08:54 编辑

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

kk_lee69 发表于 2018-5-28 01:13:00

回复 1# chzj589

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

這樣當然會慢

你應該 是單純的 存ICO 檔案 然後在一開始就讀取 做成 IMAGELIST 然後 LISTVIEW 只是取用IMAGELIST

chzj589 发表于 2018-5-28 08:14:28

回复chzj589

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

這樣當然會慢

你應該 是單純的 存ICO 檔案 然後在一 ...
kk_lee69 发表于 2018-5-28 01:13 http://www.autoit3.cn/images/common/back.gif
做成 IMAGELIST?不懂,能解释一下?

kk_lee69 发表于 2018-5-28 09:24:38

回复 3# chzj589


    _GUIImageList_Create

chzj589 发表于 2018-5-28 09:44:15

回复chzj589
    _GUIImageList_Create
kk_lee69 发表于 2018-5-28 09:24 http://www.autoit3.cn/images/common/back.gif
我就是用:
$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)
不能用数组读取显示,所以显示慢。有别的方法?

kk_lee69 发表于 2018-5-28 10:07:57

回复 5# chzj589

可以看看你的程式嗎??給我看一下你怎麼寫的

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

afan 发表于 2018-5-28 12:13:29

好像图标都有底色,老哥需要改改这类细节问题,呵呵~

chzj589 发表于 2018-5-28 13:16:52

好像图标都有底色,老哥需要改改这类细节问题,呵呵~
afan 发表于 2018-5-28 12:13 http://www.autoit3.cn/images/common/back.gif
谢谢提醒!
ListView列表加上背景色就有这个问题,正常图标的底色是白色

kk_lee69 发表于 2018-5-28 13:20:21

回复 9# chzj589

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

為什麼要做兩次 我也搞不懂

chzj589 发表于 2018-5-28 13:32:17

本帖最后由 chzj589 于 2018-5-28 13:34 编辑

回复chzj589

我沒看到 你從資料庫裏面把資料取出來另外      $hImage = _GUIImageList_Create(20 ...
kk_lee69 发表于 2018-5-28 13:20 http://www.autoit3.cn/images/common/back.gif
$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
能用另外的方式读取吗?

kk_lee69 发表于 2018-5-28 13:52:08

這樣放本來就會慢

你看我給你的範例........先讀取圖檔在設置清單即可.......
页: [1]
查看完整版本: 图标转换二进制写入数据库