我找到了有关更改文本颜色的参考,但没有使用AutoHotKey。似乎有很多LV修改选项,但与显示颜色无关。
我想做的是在文本行显示在屏幕上的情况下,以一行颜色显示文本行,该颜色由ListView列变量值之一确定。
下面是一些代码。为了清楚起见,我已经缩短了代码,但这应该可以证明我想要做的事情:
Gui, New ,, Basic List
Gui, Add, Text, x1, Location %AppLocation% Rec Count %NGCRec%
Gui, Add, ListView, VFirstGui H350 W256 gNGCSelect1 HScroll, Object Name|etc. etc
Gui, Add, Text,, Sort Options Siderial Time %SideHr%h etc. etc
While x < y
{
;If possible change text color here before the next line of text is displayed
LV_Add(, NGCSort%x%_11, NGCSort%x%_2, NGCSort%x%_5, NGCSort%x%_6, etc. etc)
x += 1
}
很抱歉上面的双倍行距,否则所有的文本都会合并在一起
我知道我可以在Gui, Add, ListView, options
中设置列表视图颜色,但是在将ListView文本显示在屏幕上时无法更改这些颜色。
如果无法在显示时更改Listview线的颜色,是否可以将显示变量的内容保存为其他颜色?
LV_Add
语句中的变量是NGCSort%x%_11
,NGCSort%x%_2
,依此类推。
从一个文本文件中读取这些变量中的值,然后在屏幕上将其显示为黑色文本。
是否有一种方法可以将文本文件的值以彩色保存到NGCSort%x%_%y%
变量中,以便它们将以彩色显示,而不是尝试在屏幕上放置文本行时更改颜色? / p>
其背后的想法是让观看者了解天文物体与天空中最高位置的距离。蓝色,物体正在向最高点上升。红色,接近最高点。绿色表示它正在下降并偏离最高点。
我不是专业的程序员,只是试图使用旧的BASIC意大利面条代码工作的退休技术人员。不是很漂亮,但通常可以。 :)
答案 0 :(得分:0)
据我对您的问题的了解,您正在尝试根据值对每行的一部分或全部进行着色。我不知道如何实现这一目标,但是我可以提供替代解决方案。
AutoHotkey的ListView可以在每行的开头显示一个图标。如果您当前不使用这些图标,则可以根据您选择的值更改图标来达到目的。
图像列表是存储在内存中的一组大小相同的图标。 创建后,每个ImageList为空。该脚本调用IL_Add() 反复将图标添加到列表,然后为每个图标分配一个 从1开始的序号。这是 脚本是指在行或列标题中显示特定图标。 这是一个工作示例,演示了如何将图标放入 ListView的行:
Gui, Add, ListView, h200 w180, Icon & Number|Description ; Create a ListView.
ImageListID := IL_Create(10) ; Create an ImageList to hold 10 small icons.
LV_SetImageList(ImageListID) ; Assign the above ImageList to the current ListView.
Loop 10 ; Load the ImageList with a series of icons from the DLL.
IL_Add(ImageListID, "shell32.dll", A_Index)
Loop 10 ; Add rows to the ListView (for demonstration purposes, one for each icon).
LV_Add("Icon" . A_Index, A_Index, "n/a")
LV_ModifyCol("Hdr") ; Auto-adjust the column widths.
Gui Show
return
GuiClose: ; Exit the script when the user closes the ListView's GUI window.
ExitApp
我以Gist here的形式发布了一个工作示例以及一些不同的图标集。