HighGuy Posted February 3, 2005 Posted February 3, 2005 Hi, I have a problem with one of my GUIs that's using tabs and a listview. It took me quite a long time to figure out that using a listview inside a tab was responsible for the problem. Can anyone confirm this behavior on his computer? expandcollapse popup#include <GUIConstants.au3> $LVM_DELETEALLITEMS = 0x1009 $LVM_SETCOLUMNWIDTH = 0x101E GUICreate("listview items", 250, 300, -1, -1,-1,$WS_EX_ACCEPTFILES) ; comment out the following two lines to see the difference $tTab = GUICtrlCreateTab(10, 10, 220, 250) $tItem1 = GUICtrlCreateTabitem("Tab1") $listview = GuiCtrlCreateListView ("col1 |col2|col3 ",30,40,180,110) $add = GuiCtrlCreateButton ("Add Item",75,170,120,20) $clear = GuiCtrlCreateButton ("Clear list",75,200,120,20) $resize = GuiCtrlCreateButton ("Resize columns",75,230,120,20) $item1=GuiCtrlCreateListViewItem("item2|col22|col23",$listview) $item2=GuiCtrlCreateListViewItem("item1|col12|col13",$listview) $item3=GuiCtrlCreateListViewItem("item3|col32|col33",$listview) $tItem2 = GUICtrlCreateTabitem("Empty tab2") GuiSetState() Do $msg = GuiGetMsg () Select Case $msg = $add $itemX=GuiCtrlCreateListViewItem("small width|medium width--------------|large width-----------------------------------",$listview) Case $msg = $clear GuiCtrlSendMsg($listview, $LVM_DELETEALLITEMS,0,0) Case $msg = $resize GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 0, -1); set column 1 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 1, -1); set column 2 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 2, -1); set column 3 to optimal width Case $msg = $listview MsgBox(0,"listview", "clicked="& GuiCtrlGetState($listview),2) EndSelect Until $msg = $GUI_EVENT_CLOSE Start playing around with the buttons and you'll see what I mean. If you comment out the tab-creation the problem is gone.
jpm Posted February 3, 2005 Posted February 3, 2005 Hi,I have a problem with one of my GUIs that's using tabs and a listview. It took me quite a long time to figure out that using a listview inside a tab was responsible for the problem. Can anyone confirm this behavior on his computer?expandcollapse popup#include <GUIConstants.au3> $LVM_DELETEALLITEMS = 0x1009 $LVM_SETCOLUMNWIDTH = 0x101E GUICreate("listview items", 250, 300, -1, -1,-1,$WS_EX_ACCEPTFILES) ; comment out the following two lines to see the difference $tTab = GUICtrlCreateTab(10, 10, 220, 250) $tItem1 = GUICtrlCreateTabitem("Tab1") $listview = GuiCtrlCreateListView ("col1 |col2|col3 ",30,40,180,110) $add = GuiCtrlCreateButton ("Add Item",75,170,120,20) $clear = GuiCtrlCreateButton ("Clear list",75,200,120,20) $resize = GuiCtrlCreateButton ("Resize columns",75,230,120,20) $item1=GuiCtrlCreateListViewItem("item2|col22|col23",$listview) $item2=GuiCtrlCreateListViewItem("item1|col12|col13",$listview) $item3=GuiCtrlCreateListViewItem("item3|col32|col33",$listview) $tItem2 = GUICtrlCreateTabitem("Empty tab2") GuiSetState() Do $msg = GuiGetMsg () Select Case $msg = $add $itemX=GuiCtrlCreateListViewItem("small width|medium width--------------|large width-----------------------------------",$listview) Case $msg = $clear GuiCtrlSendMsg($listview, $LVM_DELETEALLITEMS,0,0) Case $msg = $resize GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 0, -1); set column 1 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 1, -1); set column 2 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 2, -1); set column 3 to optimal width Case $msg = $listview MsgBox(0,"listview", "clicked="& GuiCtrlGetState($listview),2) EndSelect Until $msg = $GUI_EVENT_CLOSEStart playing around with the buttons and you'll see what I mean.If you comment out the tab-creation the problem is gone.<{POST_SNAPBACK}>Found the problem but you will still have a problem on resize on empty because the GuiCtrlSendMsg will not do anything about repainting the listview controlThanks
HighGuy Posted February 3, 2005 Author Posted February 3, 2005 Found the problem but you will still have a problem on resize on empty because the GuiCtrlSendMsg will not do anything about repainting the listview controlThanks <{POST_SNAPBACK}>Does this mean there'll be a fix for it in one of the next releases?
jpm Posted February 3, 2005 Posted February 3, 2005 Does this mean there'll be a fix for it in one of the next releases? <{POST_SNAPBACK}>yes next beta
HighGuy Posted February 7, 2005 Author Posted February 7, 2005 yes next beta <{POST_SNAPBACK}>Current beta 3.1.0.14 still has a problem with it. Start my example and immediately press the "resize columns" button.
Administrators Jon Posted February 7, 2005 Administrators Posted February 7, 2005 The SendMsg stuff is low level stuff and messages are just passed from Autoit to the WinAPI without checking (too many checks). What you need to do after that is to force a redraw. AutoIt currently forces a redraw when you mess around with control states or positioning so just add this after your SendMsg statements: GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 0, -1); set column 1 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 1, -1); set column 2 to optimal width GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 2, -1); set column 3 to optimal width GUICtrlSetState($listview, $GUI_ENABLE) We can look to add a GUICtrlRedraw or $GUI_REDRAW type thing in the next version. Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/
HighGuy Posted February 7, 2005 Author Posted February 7, 2005 We can look to add a GUICtrlRedraw or $GUI_REDRAW type thing in the next version.<{POST_SNAPBACK}>As a quick fix this is o.k. for me. Thank you for this hint Jon! Now start releasing the final version
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now