DropDownList에는 소문자 알파벳과 대문자 알파엣이 같이 있습니다.
Gui, Add, DropDownList, x10 y10 vdrop1, |a|b|c|d|A|B|C|D
Gui, Add, Button, x10 y+3, 저장
Gui, Add, Button, x+3, 불러오기
Gui, Show, AutoSize, Drop예제
return
GuiClose:
ExitApp
Button저장:
Gui, Submit, NoHide
IniWrite, %drop1%, droplist.ini, drop, drop1
return
Button불러오기:
Gui, Submit, NoHide
IniRead, drop1_list, droplist.ini, drop, drop1
GuiControl, ChooseString, drop1, % drop1_list
return
이렇게 소스를 하고나서 drop1에 값을 대문자 D로 선택 후 저장을 하면 ini 파일에는 대문자 D로 저장이 되고
IniRead로 값을 불러와서 Msgbox로 확인을 해도 대문자 D로 나오지만
GuiControl로 변수값을 대입하면 앞쪽에 있는 d로 선택이 됩니다...
만약 반대로 drop1 리스트에 대문자가 앞이로 소문자가 뒤일경우에도 소문자를 저장을 하고 불러오면
앞에 있는 대문자로 선택이 됩니다....
저장한 값으로 선택되게 할려면 DropDownList 옵션에 AltSubmit 넣고
GuiControl, choose 로 하는 방법밖에 없나요..
이렇게 하면 매크로에서 DropDownList 값을 영문으로 받아와서 매크로 진행을 해야하는데..
DropDownList 목록은 알파벳 a-z까지 대소문자를 하려니..
소스가 너무 길어져서 다른 방법이 있을까 도움을 요청해봅니다..
http://autohotkeykr.sourceforge.net/docs/commands/StringCaseSense.htm
GuiControl 윗 라인에 StringCaseSence On하시고, 아래 라인에서 다시 바로 Off해주시면 될거 같구요..
혹은 말씀하신대로 altsubmit 이용하셔도 됩니다.
잘 생각해보시면 소스가 굳이 길어질 필요가 없어요
if (drop1_list=1)
drop1_list:="a"
else if (drop1_list=2)
drop1_list="b" ...
이런식으로 하시면 당연히 길어지고요.
ddl목록이 a부터 Z까지라면
StringOrder:="abc..........XYZ"
라고 변수 하나를 스크립트 초반에 선언해두고
Button불러오기 라벨에는
Gui, Submit, NoHide
IniRead, drop1_list, droplist.ini, drop, drop1
GuiControl, Choose, drop1, % drop1_list
drop1_list:=SubStr(StringOrder, drop1_list - 1)
라고 하면 되지 않을까요
SubStr함수에서 drop1_lis 값에 -1 해주는 이유는
위에 드랍다운리스트 항목 정의에서 a|b|c|d...로 하지 않고 |a|b|c|d... 로 하셨기 때문입니다
맨 앞에 빈항목이 하나 있다보니 숫자를 변수 내 문자열 위치로 매치할때 아마 1을 빼줘야 매치가 정확히 될거에요.
이런식으로 하셔도 되구요... a~Z까지 요소 하나당 문자 하나씩 할당된 배열하나 생성하셔서 해도 되구요.
근데 아마 저 방법이 젤 간편할거에요. 배열로 만들려면 몇줄 더 쓰셔야할듯,..