Gui Add, ListView, x8 y6 w372 h155 AltSubmit -multi nosort -LV0x10 gListview, 번호|점수|종류
Gui Add, Button, x284 y176 w92 h42 gstart, 시작
LV_Add("",1,1,2)
LV_Add("",2,3,4)
LV_Add("",3,5,6)
Gui Show
return
ListView:
Gui, Submit, NoHide
if A_GuiEvent=Normal
{
LV_GetText(nb,A_EventInfo,1)
}
return
start:
MsgBox, %nb%
return
임시로 위와 같이 만들었습니다.
윗 그림에서 보시면 1번행이 선택되어 있고 시작을 누르면 1번행의 번호가 메시지박스됩니다.
이후 리스트뷰상에서 빈곳을 클릭한후 시작을 누르면 기존 선택한 번호의 변수가 그대로 출력됩니다.
그래서 빈곳으로 선택이 안되어 있을경우 값을 초기화 하려 합니다.
리스트뷰 내에 마우스클릭시 선택한 행 (a_eventinfo)의 1번열번호를 nb변수에 저장하는데요.
리스트뷰가 빈곳을 선택해서 기존선택된 행의 활성화를 시각적으로 없애줘도 선택이 된 상태로 작동이 되는것 같네요
아마 안보이지만 포커스가 계속 기존 선택한곳에 지정이 되어있어서 그런것 같습니다.
여기까지 질문하고 보니, 포커스 옵션을 본듯하여 찾아서 아래 구문을 추가해줬습니다.. 자문자답이..???
LV_Modify(A_EventInfo,"-focus")
그랬더니 , 원하던데로 작동을 하는데요.
근데 , 리스트뷰가 좀 이상한게 한번 gListView로 작동시 두번을 읽는거 같더라구요. 한번 쭈욱 실행하고
리턴만나서 끝나는게 아니라 다시 한번 읽는것 같네요.
ListView: 라벨 뒤로 msgbox명령어 하나 넣어둬보면 두번실행하네요.
일단 원하던데로 작동은 하는데 이게 원래 이렇게 하는건지 다른 방법으로 하는건지 궁금합니다.
저도 이런 경우가 있었는데요..
"if A_GuiEvent=Normal" 앞에 다른 액션이 있을 경우 (리스트 뷰 위에 마우스가 올라간다던가 등등..) ListView: 가 작동을 하는 것 같더군요..
확실하지는 않습니다..ㅎㅎ;;
그리고, 리스트뷰 빈공간을 클릭했을 때 "0"을 반환하는 것은 저는 아래의 ahk 매뉴얼에 있는 구문을 이용하였습니다.. 원래 선택한 rownumber를 이용하는 건데 선택된게 없으면 "0"을 반환시킬 수 있습니다..
RowNumber = 0 ; This causes the first loop iteration to start the search at the top of the list.
Loop
{
RowNumber := LV_GetNext(RowNumber) ; Resume the search at the row after that found by the previous iteration.
if not RowNumber ; The above returned zero, so there are no more selected rows.
break
LV_GetText(Text, RowNumber)
MsgBox The next selected row is #%RowNumber%, whose first field is "%Text%".
}