리스트뷰의 데이터를 INI 파일로 관리하는 것은 많은 한계점이 있습니다. INI 파일의 활용목적은 레지스트리와 비슷하게 환경설정 값을 키와 값으로 관리하기 위함인데요. INI 파일의 목적에 맞지 않기도 하고, 여러 한계점에도 불구하고 간단한 데이터 관리용도로 많은 분들이 사용하고 있는것 같습니다.
동작 영상
예제코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
;글로벌 변수(I,R,S,D)
global CRUD_MODE = "R"
;리스트뷰
Gui, Add, ListView, x10 y10 w200 h204 vListPerson gListPerson Grid R10, 이름|나이|키
LV_ModifyCol(1, 100) ;이름(Section)
LV_ModifyCol(2, 50) ;나이
LV_ModifyCol(3, 50) ;키
LV_Colors.Attach(ListPerson)
;상세정보
Gui, Add, Text, x12 y234 w40 h20, 이름 :
Gui, Add, Edit, x56 y230 w150 h20 vEditName
Gui, Add, Text, x12 y259 w44 h20, 나이 :
Gui, Add, Edit, x56 y254 w150 h20 vEditAge +Number
Gui, Add, Text, x12 y284 w44 h20, 키 :
Gui, Add, Edit, x56 y280 w150 h20 vEditHeight +Number
;버튼
Gui, Add, Button, x85 y310 w50 h24 gBtnInit vBtnInit, 초기화
Gui, Add, Button, x138 y310 w34 h24 gBtnSave vBtnSave, 저장
Gui, Add, Button, x174 y310 w34 h24 gBtnDel vBtnDel, 삭제
;윈도우
Gui, Show, w220 h345, 리스트뷰 예제
gosub, LoadIniData
return
;GUI 권한별 활성/비활성
CRUD(strMode:="")
{
if(strMode=="R")
{
GuiControl, Disable, EditName
GuiControl, Enable, EditAge
GuiControl, Enable, EditHeight
}
else
{
GuiControl, Enable, EditName
GuiControl, Enable, EditAge
GuiControl, Enable, EditHeight
}
}
;조회
LoadIniData:
{
IfNotExist , data.ini
{
MsgBox, 저장된 파일 Open 실패! 파일을 확인해주세요.[data.ini]
return
}
Gui, Submit, Nohide
IniRead, OutNames, data.ini
LV_Delete()
Loop, Parse, OutNames, `n
{
;msgbox %A_Index% %A_LoopField%
oName = %A_LoopField%
Iniread, oAge, data.ini, %oName%, 나이
Iniread, oHeight, data.ini, %oName%, 키
LV_Add("", oName, oAge, oHeight)
}
CRUD("I")
}
return
;ListPerson GUI Event
ListPerson:
{
;상세조회
if (A_GuiEvent = "DoubleClick")
{
LV_GetText(oName, A_EventInfo, 1)
LV_GetText(oAge, A_EventInfo, 2)
LV_GetText(oHeight, A_EventInfo, 3)
GuiControl, , EditName, %oName%
GuiControl, , EditAge, %oAge%
GuiControl, , EditHeight, %oHeight%
CRUD("R")
}
}
return
;초기화 버튼 이벤트
BtnInit:
{
GuiControl, , EditName,
GuiControl, , EditAge,
GuiControl, , EditHeight,
CRUD("I")
}
return
;저장 버튼 이벤트
BtnSave:
{
Gui, Submit, NoHide
IniWrite, %EditAge%, data.ini, %EditName%, 나이
IniWrite, %EditHeight%, data.ini, %EditName%, 키
gosub, LoadIniData
gosub, BtnInit
CRUD("S")
}
return
;삭제 버튼 이벤트
BtnDel:
{
Gui, Submit, NoHide
if(EditName == "")
{
msgbox, 삭제할 사용자를 선택해주세요.
return
}
IniDelete, data.ini, %EditName%
gosub, LoadIniData
gosub, BtnInit
CRUD("D")
}
return
;GUI 종료 이벤트
GuiClose:
ExitApp
|