[질문에 대한 답변에 관하여..]
"불멸의삽질..."아이디는 처음보는것 같은데...
제가 질문에 답변을 잘 못다는 경우는?
1. 모르는 경우
2. 답변을 달기위해 시간이 필요한경우
(대부분의 경우 자세하게 달고 , 직접 테스트해 보고 답변 드리기 때문에...)
3. 질문이 무슨의미인지 정확히 파악하기 어려운 경우..
4. 바쁜경우..
5. 기타..
그런데 님의 질문의 제 입장에서는
4번하고 3번이 좀 썩여있습니다.
정확히 무엇을 원하는지 이해가 잘 안갔었습니다.
[ListView 캡션 Edit 에 관하여]
@질문이해
ListView의 item의 Caption을 수정할때 MaxLength를 설정할수 없는냐는 질문이죠?
ReadOnly=false 상태에서 말이죠?
질문을 제대로 이해 했나 모르겠네요..
@답변
TListView에는 OnEdited이벤트와 OnEditing이벤트 가 있습니다.
Item의 Caption을 수정하려고할때 OnEditing이벤트가 발생하고
Item의 Caption을 수정을 완료할때 OnEdited이벤트가 발생합니다.
방법1. 간단히 하는 방법은?
OnEdited이벤트에서 넘어오는 AnsiString &S의 Length를 확인해 본 후
S값을 수정하시면 됩니다.
;이방법은 수정중에는 입력제한은 안되고 수정완료시에만 적용이 되죠
방법2. Cation을 수정하는 EDIT 컨트롤에서 입력제한
이방법이 확실한 방법인데요..
2.1 수정입력창?
TComboBox나 TTreeView , TListView 등의 item Caption이나 Text를 수정할때
Edit가 뜨잖아요? 그건 모두 윈도우에 기본 Control인 EDIT입니다.
2.2 MexLength설정
TEdit는 EDIT를 랩핑해놓은 Control입니다.
TEdit가 MaxLength설정은 vcl소스를 보면
SendMessage로 EM_SETLIMITTEXT 메세지를 날려줍니다.
EDIT도 똑같은 방식으로 되겠죠..
2.3 EDIT 찾기
그런데 EDIT가 평소에는 보이지 않다가 수정할때만 보이잖아요
그래서 그냥 제어할수 있는것이 아니라 FindWindowEx로 찾아야 합니다.
수정할때만 보이므로 ListView같은 경우에는 OnEditing이벤트에서 찾으면 되구요
FindWindow 가 아니라 FindWindowEx로 한것은 ListView위에 있기 때문입니다.
TComboBox등 다른 컨트롤도 FindWindowEx로 EDIT를 찾아야 하구요..
정리하면..
- ListView의 OnEditing이벤트에서 FindWindowEx로 ListView안에서 EDIT의 HWND를 찾은 다음
- SendMessage로 EM_SETLIMITTEXT를 날리면 되는것입니다. WPARAM에 원하는 length를 주고요..
그럼..
불멸의삽질(곰) 님이 쓰신 글 :
: 불멸의삽질(곰) 님이 쓰신 글 :
: : ListView에서 갭션 Text에 문자수 제한을 걸 수는 없는건가요?
: :
: : 전 5개까지만 받을려고했더니 맥스렌스 설정하는게 없더라구요 OTL
: :
: : 아시는 분~~ ㅠㅠ
:
: 제가 질문 올리는거 마다 리플이 하나도 없네요 ㅠㅠ
:
: 혹시 제가 질문을 이상하게 하나요? 아니면 싸가지 없게 하나요?
:
: ㅠㅠ
|