안녕하세요. 천리안 프로그래머 포럼 델파이 담당자 댁스터(강범석)입니다.
메모나 에디트박스 등은 MaxLength라는 속성이 있습니다. 지정된 MaxLength의 값
을 초과해서 입력할 수 없죠.
질문하신 내용대로 하실려면 글자를 입력할 때 입력한 글자의 길이와 MaxLength
값과 비교를 하셔야합니다.
메모나 에디트박스의 OnKeyPress 이벤트를 사용합니다. OnKeyDown을 사용하지 않
은 이유는 실제로 메모나 에디트박스에 키를 눌러서 글자가 써지는 것은 숫자키와
A-Z 키, 그밖에 기호키(,.;'\+~ 등)입니다. 그렇기 때문에 OnKeyDown을 사용하면
특수키까지 인식하여 MaxLength이상 글자가 입력된 후 메시지 창을 띄우고 나서
화살표키를 누른다던가 할 때 문제가 생깁니다. 그러므로 이경우에는 WM_CHAR을
발생시키는 OnKeyPress이벤트를 사용합니다.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Length(Edit1.Text) = Edit1.MaxLength) then
ShowMessage('최대 입력치를 초과했습니다.');
end;
┏━━━┳━┳━┳━━━┳━┳━┳━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ __ ┃
┃ ┃ ┃ ━┫ ┃ ┃ ━┫ ┃
┃ ┃ ┃ ┣━ ━┫ : ┃ ┃ ━┫
┃ ┃ ┃ ━┫ ┃ ┃ ━┫ ┃
┗┓ ┏┫ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┗━┛┗━┻━┻━━━┻━┻━┻━━━┻━━━┻━┻━┛
|