Lua wxwidgets wxListCtrl:Lua是一种简单、有效的脚本语言,wxwidgets是一个跨平台的GUI工具包,而wxListCtrl是其中的一个重要组件,主要用于创建具有列和行的可编辑列表视图。

当单击一行时,如何获取其索引?

lpanelList:Connect(ID_REL_LIST, wx.wxEVT_COMMAND_LEFT_CLICK,
function (event)
local number
number = GetIndex()                           --生成错误
frame:SetStatusText("REL LIST")
wx.wxMessageBox('Clicked on rel list.',
" Rel List Clicked ",
wx.wxOK + wx.wxICON_INFORMATION,
lpanelList)
end )
点赞
用户1442917
用户1442917

GetIndex()event的一个方法,因此您应该使用event:GetIndex(),但我认为对于鼠标事件(LEFT_CLICK),它不会填充。对于鼠标事件,您可能需要使用wxListCtrl:FindItem(如果通过wxlua可用)来获取最接近单击位置的项目。要获取单击的坐标,可以使用event:GetPoint()(如果可用)或类似于下面这样的内容:

local mousePos = wx.wxGetMousePosition() -- 鼠标位于屏幕上的位置
local clientPos = lpanelList:ScreenToClient(mousePos)

如果不使用鼠标事件,则可以使用wxEVT_COMMAND_LIST_ITEM_ACTIVATED,这种情况下您可以执行local index = event:GetIndex()(我认为此索引是基于0的)。

如果您使用wxlua,则可以在其中找到的范例(samples/文件夹)是wxlua API支持的解决方案的良好来源。

2015-01-14 18:53:54