tab2控件上有多个Listviews

时间:2014-05-30 21:31:34

标签: listview tabcontrol autohotkey

我在listview控件上有多个tab2控件时遇到问题。

在我的gui中,我有一个tab2控件,其中三个选项卡各有一个listview控件。

我的问题是,当我使用LV_GetText()时,我无法找到区分哪个listview来获取的方法。

要解决问题,LV_Add()无法区分列表视图。

通常,您只需要使用mygui:default来区分gui窗口,但listview控件似乎没有此选项。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

实际上,有一种方法可以指定哪个列表视图。 It actually mentions this in the docs, too.

基本上,您所做的是更改默认列表视图。您无法将您的功能直接指向特定列表视图,但如果更改默认列表视图,则可以对其进行操作。更改后,所有后续命令都将以新的默认值运行。

你改变它:

Gui, ListView, ListViewName

或者像这样,如果你需要区分gui windows:

Gui, 3:ListView, ListViewName

这是一个示例。将其粘贴到脚本文件中并运行它以查看它是否有效。


基本方法

#SingleInstance,force
gosub, SHOWGUI
return

SHOWGUI:
    gui, mainui:new, hwndmainui, ListViews On Tab2
    gui, add, tab2, vtabs, one|two|three|four
        gui, tab, one
            gui,add, listview, r5 vlistview1 gListView1Events +altsubmit -multi, col1|col2
            LV_Add("", "bob", "harry")
            LV_Add("", "first", "listview")
        gui, tab, two
            gui,add, listview, r5 vlistview2 gListView2Events +altsubmit -multi, col1|col2
            LV_Add("", "george", "harvey")
            LV_Add("", "second", "listview")
        gui, tab, three
            gui,add, listview, r5 vlistview3 gListView3Events +altsubmit -multi, col1|col2
            LV_Add("", "michael", "richard")
            LV_Add("", "third", "listview")     
        gui, tab, four
            gui,add, listview, r5 vlistview4 gListView4Events +altsubmit -multi, col1|col2
            LV_Add("", "harold", "marcel")
            LV_Add("", "fourth", "listview")        
    gui, show
RETURN


REPORT:
    LV_GetText(firstcol, A_EventInfo, 1)
    LV_GetText(secondcol, A_EventInfo, 2)
    msgbox, %firstcol% : %secondcol%
RETURN

ListView1Events:
    gui, mainui:listview, listview1
    if(A_GuiEvent == "Normal"){ 
        gosub, REPORT
    }   
RETURN

ListView2Events:
    gui, mainui:listview, listview2
    if(A_GuiEvent == "Normal"){ 
        gosub, REPORT
    }   
RETURN

ListView3Events:
    gui, mainui:listview, listview3
    if(A_GuiEvent == "Normal"){ 
        gosub, REPORT
    }   
RETURN

ListView4Events:
    gui, mainui:listview, listview4
    if(A_GuiEvent == "Normal"){ 
        gosub, REPORT
    }   
RETURN

更好的方式

实际上,there is a better, not-so-clumsy way, thanks go garry可以处理多个列表视图。

在这种方法中,诀窍是使用相同的名称和序号命名列表视图:listview1, listview2, listview3...

这样,事件处理程序可以有一个gLabel:gui, mainui:listview, listview%Tabnumber%

;-------- http://ahkscript.org/boards/viewtopic.php?f=5&t=3656 ---
MODIFIED=20140531
Tabnumber:=1
    gui, mainui:new, hwndmainui, ListViews On Tab2
    gui,add, Tab2, gtabchange vTabnumber AltSubmit, one|two|three|four
        gui,tab, one
            gui,add, listview, r5 vlistview1 gListViewEvents +altsubmit -multi, col1|col2
            LV_Add("", "bob", "harry")
            LV_Add("", "first", "111111111")
            gosub,width1
        gui,tab, two
            gui,add, listview, r5 vlistview2 gListViewEvents +altsubmit -multi, col1|col2
            LV_Add("", "george", "harvey")
            LV_Add("", "second", "222222")
            gosub,width1
        gui, tab, three
            gui,add, listview, r5 vlistview3 gListViewEvents +altsubmit -multi, col1|col2
            LV_Add("", "michael", "richard")
            LV_Add("", "third", "33333333")
            gosub,width1
        gui, tab, four
            gui,add, listview, r5 vlistview4 gListViewEvents +altsubmit -multi, col1|col2
            LV_Add("", "harold", "marcel")
            LV_Add("", "fourth", "44444")
            gosub,width1
    gui, show
gosub,tabchange
RETURN

mainuiGuiclose:
exitapp

width1:
  T1=70
   T2=140
   LV_ModifyCol(1,T1)
   LV_ModifyCol(2,T2)
   LV_ModifyCol(2,"Integer")
return

;-------------------------------------------------------------------------------------
tabchange:
  GuiControlGet, Tabnumber
Return
;-------------------------------------------------------------------------------------

ListViewEvents:
   gui, mainui:listview, listview%Tabnumber%
    if(A_GuiEvent == "Normal"){
    LV_GetText(firstcol, A_EventInfo, 1)
    LV_GetText(secondcol, A_EventInfo, 2)
    msgbox, %firstcol% : %secondcol%
    }
RETURN