Kira16651 Posted June 10, 2015 Posted June 10, 2015 (edited) Hello,I'm trying to set the background color for the listview and the window. I just can't figure this one out though, no matter how much I look at it.I cut the code down to the bare minimum. Still not working as intended.You are supposed to select the color in the menu. Then the function _SwitchBackgroundColor is called with the string for the color.Works fine for the window background. But the ListView background is messed up.First, the window is grey and the text background is white. Text background should be white, since the function is called before the main loop.Whenever I click the corresponding menu, first the window changes color, than on the second click the text background changes color. Why this requires two clicks is beyond me.Does anyone have any idea why that is?expandcollapse popup;##### stuff we need for this script #include <File.au3> #include <Array.au3> #include <MsgBoxConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <Misc.au3> ;##### stuff needed for the gui #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIListBox.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <GuiImageList.au3> #include <ColorConstants.au3> #Region ### START global variables ;####### global variables Global $sVersion = "0.06" Global $sBackgroundColor = "default" ; background color of the window #EndRegion ### START global variables #Region ### START Koda GUI section ### Form=q:\programme\autoit\src\gui_main.kxf $hGuiWindow = GUICreate("asdf", 1000, 700) $hComboBox = GUICtrlCreateCombo("nichts", 700, 8, 300 - 8) $hGuiMenuHelp = GUICtrlCreateMenu("Hilfe?") $hGuiMenuHelpHelp = GUICtrlCreateMenuItem("Hilfe", $hGuiMenuHelp) $hGuiMenuColor = GUICtrlCreateMenu("Hintergrundfarbe") $hGuiMenuColorDefault = GUICtrlCreateMenuItem("Standard", $hGuiMenuColor) $hGuiMenuColorBlue = GUICtrlCreateMenuItem("Blau", $hGuiMenuColor) $hGuiInput = GUICtrlCreateEdit("", 8, 8, 1000 - 16 - 300, 21, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN)) Global $hGuiListview = _GUICtrlListView_Create($hGuiWindow, "asdf|qwer|zxcv", 8, 37, 1000 - 16, 700 - 45 - 21) _GUICtrlListView_AddItem($hGuiListview, "lalala", 0) _GUICtrlListView_AddSubItem($hGuiListview, 0, "blablabla", 0) _GUICtrlListView_AddSubItem($hGuiListview, 0, "woiejf", 0) _GUICtrlListView_AddItem($hGuiListview, "ythyj", 0) _GUICtrlListView_AddSubItem($hGuiListview, 1, "seff", 0) _GUICtrlListView_AddSubItem($hGuiListview, 1, "iaw", 0) _GUICtrlListView_AddItem($hGuiListview, "vyzw", 0) _GUICtrlListView_AddSubItem($hGuiListview, 2, "xenuvt", 0) _GUICtrlListView_AddSubItem($hGuiListview, 2, "cscs", 0) _GUICtrlListView_SetExtendedListViewStyle($hGuiListview, $LVS_EX_FULLROWSELECT) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### _SwitchBackgroundColor($sBackgroundColor, $hGuiWindow, $hGuiListview) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $hGuiMenuHelpHelp MsgBox(0, '', '' & _ @CRLF & '' & _ @CRLF & "Version: " & $sVersion & _ @CRLF & '') Case $hGuiMenuColorBlue $sBackgroundColor = "blue" _SwitchBackgroundColor($sBackgroundColor, $hGuiWindow, $hGuiListview) Case $hGuiMenuColorDefault $sBackgroundColor = "default" _SwitchBackgroundColor($sBackgroundColor, $hGuiWindow, $hGuiListview) EndSwitch Sleep(10) WEnd Func _SwitchBackgroundColor($sColor, $hWindow, $hListview) ; switches the background color of the window Local $RGB ; the rgb color Local $BGR ; the bgr color If $sColor = "blue" Then $RGB = 0xA6CAF0 $BGR = 0xF0CAA6 ;~ $RGB = 0xA6CAF0 ;~ $BGR = _ColorConvert($RGB) EndIf If $sColor = "default" Then $RGB = 0xF0F0F0 $BGR = 0xF0F0F0 ;~ $RGB = 0xF0F0F0 ;~ $BGR = _ColorConvert($RGB) EndIf GUISetBkColor($RGB, $hWindow) _GUICtrlListView_SetBkColor($hListview, $BGR) _GUICtrlListView_SetTextColor($hListview, $CLR_BLACK) _GUICtrlListView_SetTextBkColor($hListview, $BGR) EndFunc ;==>_SwitchBackgroundColor Func _ColorConvert($nColor);RGB to BGR or BGR to RGB ; source for this function: ; https://www.autoitscript.com/forum/topic/73302-where-can-i-get-a-version-that-supports-bgr-colormode/ Return _ BitOR(BitShift(BitAND($nColor, 0x000000FF), -16), _ BitAND($nColor, 0x0000FF00), _ BitShift(BitAND($nColor, 0x00FF0000), 16)) EndFunc ;==>_ColorConvert Edited June 10, 2015 by Kira16651 added tags
LarsJ Posted June 10, 2015 Posted June 10, 2015 You could try to replace thisGUISetBkColor($RGB, $hWindow) _GUICtrlListView_SetBkColor($hListview, $BGR) _GUICtrlListView_SetTextColor($hListview, $CLR_BLACK) _GUICtrlListView_SetTextBkColor($hListview, $BGR)with this_GUICtrlListView_SetBkColor($hListview, $BGR) _GUICtrlListView_SetTextColor($hListview, $CLR_BLACK) _GUICtrlListView_SetTextBkColor($hListview, $BGR) GUISetBkColor($RGB, $hWindow) Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions
Kira16651 Posted June 10, 2015 Author Posted June 10, 2015 No idea why this works, but this is exactly what i needed thanks
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