방개
비밀번호를 잊어버리셨나요?

정보

오토핫키 리스트박스 항목 수정 예제

    • 글자 크기

누가 질문해주셔서 만든 예제 스크립트인데요,

그 분께 드리고 나니 관련 정보 찾는 분 계실까봐 여기에도 올립니다.. ^^

 

코드박스에 마우스를 올리면 우측 상단에 Copy 버튼이 나타납니다.

 

; 두 가지 방법이 있는데 취향을 타니 둘 모두 드립니다.

Gui, Add, Listbox, x0 y0 w200 h200 vList, 1|2|3|4|5|6|7|8
Gui, Show, w200 h200, 123
return

;Loop를 통해 리스트 전체를 읽은 후 그 부분만 수정해주셔도 되고요
F1::
ControlGet, prevList, List,,ListBox1, 123 ;<- Control계열 명령어에선 컨트롤의 v레이블이 아닌 ClassNN을 써줘야하기 때문에 List대신 Listbox1을 써주었습니다.
Loop, Parse, prevList, `n
{
	if (A_index = 5) ; <- 이게 정정할 줄 번호가 됩니다.
	{
		result .= "수정1|"
		continue
	}
	result .= A_LoopField "|"
}
GuiControl,,List,% "|" result ;<- 앞에 바(|)가 있으면 기존 내용을 덮어씁니다. 없으면 Append, 있으면 Overwrite.
result := ""
return

;SendMessage를 이용해주셔도 됩니다.
F2::
SendMessage, 0x182, 6,, ListBox1, 123 ;<- SendMessage에선 인덱스가 0부터 시작해서 7번째 줄 삭제를 위해 6을 썼습니다.
sendmessage, 0x181, 6, "수정2", ListBox1, 123 ;<- 7번째 줄로 리스트를 추가해줍니다. 즉, 정정하고자 하는 줄을 삭제 후 새로 쓴것입니다.
return

GuiClose:
Exitapp

/* 저는 가능하면 '제가 읽을 수 있는 코드'를 좋아해서요, F1 방법이 좋습니다.
 *
 * 짧은 코드를 원하시면 F2 코드를 쓰는 것도 좋으나,
 * 어차피 해당 과정은 두 방법 모두 함수로 묶는 것이 편하기 때문에
 * 수정의 용이함을 위해 F1 방법을 쓰는 것을 추천드립니다.
 * 어떻게 작동되는지 낱낱이 보이는 코드가 마음이 편하잖아요.
 *
 * 함수로 묶으면 아래와 같습니다. (함수명 중복 방지를 위해 F1, F2를 붙였으니, 함수명은 수정하여 쓰세요)
 */

F3::
ModifyLineF1(5, "함수로수정1", "ListBox1", "123")
return

F4::
ModifyLineF2(7, "함수로수정2", "ListBox1", "123")
return

; F1방법 (사용: ModifyLineF1(5, "수정1", "ListBox1", "123")
ModifyLineF1(N, Text, ClassNN, Title)
{
	ControlGet, prevList, List,,% ClassNN, % Title
	Loop, Parse, prevList, `n
	{
		if (A_index = N)
		{
			result .= Text "|"
			continue
		}
		result .= A_LoopField "|"
	}
	GuiControl,,List,% "|" result
	return
}

;F2방법 (사용: ModifyLineF2(5, "수정2", "ListBox1", "123")
ModifyLineF2(N, Text, ClassNN, Title)
{
	SendMessage, 0x182, % N - 1,, % ClassNN, % Title
	SendMessage, 0x181, % N - 1, "" Text, % ClassNN, % Title
	return
}

 

    • 글자 크기

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...