주의!) 정확히 이해를 하면서 쓴 게 아니라.. 그냥 하다보니 되길래 메모를 남김,.. 내용이 정확하지는 않음..!! 수정 필요!
*리스트박스는 행 단위로만 나뉘어져 있고, 리스트뷰는 행과 열의 구분이 있는 형태라고 보면 된다.
[리스트박스]
Gui, WinSchedules: Add, ListBox, x0 y38 w400 h150 vLB_Schedules gLB_Schedules_Click hwndlb, %Schedule_Data%
;내용 추가하기
GuiControl, WinSchedules: , LB_Schedules, %ReadData%
;GUI 내용 가져올 때 필요할 때가 있다.(??)
Gui, WinSchedules: submit, nohide
;리스트박스에서 선택된 내용을 가져올 때
GuiControlGet, OutVar, , LB_Schedules
;리스트박스 내용 지우기
SendMessage,0x184,,,listbox1, %LB_Schedules%
;내용 변경할 때는 리스트박스에서 변수로 값을 가져와서 변경했다가 리스트박스 내용을 지우고 다시 변경된 값으로 추가..
[리스트뷰]
Gui, WinSchedules: Add, ListView, x0 y38 w690 h150 HwndHwndScheduleList vLV_Schedules gLV_Schedules_Click HScroll altsubmit checked report, 순번|날짜|요일|시간|내용
; ListView 설정 변경
Gui, WinSchedules: default ;이게 있어야 아래가 정상수행 된다.
;Gui, WinSchedules: Listview,LV_Schedules
;Gui, WinSchedules: submit, nohide
;항목별 가로 크기 변경
LV_ModifyCol(1,50) ;1
LV_ModifyCol(2,110) ;2020/04/01
LV_ModifyCol(3,50) ;금
LV_ModifyCol(4,60) ;11:30
LV_ModifyCol(4,300) ;내용
;/////////////////////////////////////////////////////////
;삽입
LV_Add(옵션, 1열, 2열, 3열, ...)
LV_Add("", RowCNT, CellData1, CellData2, CellData3, CellData4, CellData5 ;각 항목을 ListView에 나타나게 입력한다.
;삭제
LV_Delete() ;리스트뷰 모든 내용 삭제
LV_Delete(행번호) ;행번호 내용 삭제
;변경
LV_Modify(행번호, 옵션, 1열, 2열, 3열, ...)
LV_Modify(SelectRowNum, "", SelectRowNum, Sche_Date, DDL_Week, Sche_Time, ...)
;리스트뷰에서 데이터 가져오기
LV_GetText(저장변수, 행번호, 열번호)
LV_GetText(ReadCellData, RowCNT, ColCNT)
;/////////////////////////////////////////////////////////
(댓글 내용 추가)
;행과 열의 갯수를 알아내는 코드
Row_CNT := LV_GetCount()
Col_CNT := LV_GetCount("Column")
MsgBox, 0, aaa, Row : %Row_CNT%`nCol : %Col_CNT%
(삭제)
;행의 총갯수를 알아내기 위한 코드
Loop % LV_GetCount()
{
LastRowNum := A_Index
}
;열의 총갯수를 알아내기 위한 코드
Loop % LV_GetCount("Column")
{
LastColNum := A_Index
}
;리스트뷰의 행 단위 데이터를 하나의 문장으로 만듬. (열 구분 = , (콤마))
Loop, %LastRowNum%
{
Loop, %LastColNum%
{
LV_GetText(ReadCellData, RowCNT, ColCNT)
SelectSchedule .= ReadCellData . "," ; 각 칼럼의 내용을 하나로, 또 모든 행의 내용을 하나로 연결하는 코드
ColCNT++
}
;MsgBox, 0, , %SelectSchedule%
SelectSchedule .= "|" ;줄바꿈 기호 (리스트박스, 리스트뷰에서 행바꿈 기호는 |, 파일에서 행바꿈 기호는 `n)
ColCNT := 1
RowCNT++
}
;//////////////////////////
;리스트뷰에서 클릭한 행 번호를 알아내기 위한 코드 !!!!!!!!!!!!!!!!!!!!!
RowNumber = 0 ; 이렇게 하면 첫 회돌이 반복이 리스트의 최상단에서 검색을 시작합니다.
Loop
{
RowNumber := LV_GetNext(RowNumber) ; 다음으로 선택된, 체크된 또는 초점이 있는 행의 번호를 열람하고 아무것도 발견되지 않으면, 0이 반환된다.
if not RowNumber ; 위에서 0을 돌려주었고, 그래서 더 이상 선택된 행이 없습니다.
break
SelectRowNum := RowNumber
}
LV_Delete(SelectRowNum) ;선택한 행이 삭제된다.
;/////////////////////////////////
참고
http://autohotkeykr.sourceforge.net/docs/commands/ListView.htm
[2023.01.07] 오토핫키를 새로 설치하고서 생긴 컴파일 오류에 대한 메모 (0) | 2023.01.07 |
---|---|
[오토핫키] 프로세스 종료 시키기 (TaskKill, Process) 메모 (0) | 2021.08.14 |
[오토핫키] GUI 사용에 대한 메모 (0) | 2021.08.06 |
[오토핫키/스크랩] 공짜로 3버튼을 5버튼,5버튼을 7버튼 마우스,다기능 마우스로 만드는 방법 (1) | 2021.06.05 |
[오토핫키] 2개 이상의 hts에서 종목연동 팁 (1) | 2021.05.25 |