Jump to content
Sign in to follow this  
BigDaddyO

_GUICtrlListViewSort acting Weird

Recommended Posts

BigDaddyO

Hello,

I am trying to put together a little gui interface that will allow me to populate information from an SQL database. My problem is that I want to add information into a ListView box by using the _GUICtrlListViewInsertItem which works fine, But I also want the data to be capable of sorting by the column names using _GUICtrlListViewSort. I put together a small sample script that explains my problem.

#include <GUIConstants.au3>
#include <GuiListView.au3>

Const $LVS_SORTDESCENDING = 0x0020
Dim $listview, $Btn_Exit, $msg, $Status, $Btn_Insert, $ret, $Input_Index
GUICreate("listview items",330,200, 100,200)

$listview = GuiCtrlCreateListView ("Sample One  |Sample two  |Sample Three  ", 10, 10, 310, 149, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
$button = GuiCtrlCreateButton ("Insert",175,170,70,20)
GuiSetState()
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($listview)]
Do
  $msg = GuiGetMsg ()
   Select
   Case $msg = $button
       $x = 0
       Do 
       $InsertList = _GUICtrlListViewInsertItem ($listview, $x, $x & "|" & $x + 1 & "|" & $x + 2)
       $x = $x + 1
       Until $x = 14
    Case $msg = $listview
        _GUICtrlListViewSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
   EndSelect
Until $msg = $GUI_EVENT_CLOSE

If you click on Insert to populate data, then click on one of the column headers it appears to add blank items at the bottom of the listview, if you resort using another column it looks like the data is wiped out but you need to do is scroll down because it put the blank rows on top. Any ideas how to get around this adding of blank rows?

Thanks,

Mike


Share this post


Link to post
Share on other sites
GaryFrost

Looks like not a sort problem but a InsertItem problem, The Delete all items function was changed to free up autoits resources when items were deleted,

this seems to have caused some strange behaviour when using insert item.

I'm looking into the problem with insert item, but for now:

#include <GUIConstants.au3>
#include <GuiListView.au3>

Const $LVM_SETEXTENDEDLISTVIEWSTYLE    = 0x1036
Const $LVS_SORTDESCENDING = 0x0020

Dim $listview, $Btn_Exit, $msg, $Status, $Btn_Insert, $ret, $Input_Index
GUICreate("listview items",330,200, 100,200)

$listview = GuiCtrlCreateListView ("Sample One  |Sample two  |Sample Three  ", 10, 10, 310, 149)
GUICtrlSendMsg(-1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg(-1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
$button = GuiCtrlCreateButton ("Insert",175,170,70,20)
GuiSetState()
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($listview)]
Do
  $msg = GuiGetMsg ()
   Select
   Case $msg = $button
       $x = 0
       Do 
          GUICtrlCreateListViewItem($x & "|" & $x + 1 & "|" & $x + 2, $listview)

;~        $InsertList = _GUICtrlListViewInsertItem ($listview, $x, $x & "|" & $x + 1 & "|" & $x + 2)
       $x = $x + 1
       Until $x = 14
    Case $msg = $listview
        _GUICtrlListViewSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
   EndSelect
Until $msg = $GUI_EVENT_CLOSE

Edit: found how to fix the delet all items if insert item is used, i'll submit the fix

Gary

Edited by gafrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites
BigDaddyO

Thanks, I'll wait for the new Beta release


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.