Form안에 있는 메모 컨트롤의 이름이 Memo1이라고 가정하면,
Memo1의 OnKeydown에 다음과 같은 이벤트 핸들러를 작성합니다.
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
AHeight: Integer;
ACanvas: TControlCanvas;
begin
inherited;
if Key = VK_RETURN then
begin
ACanvas := TControlCanvas.Create;
try
//
// 메모 컨트롤의 라인수를 알아내어 폰트의 높이를 곱한다
// 이것보다 메모 컨트롤의 높이가 적으면 늘린다.
//
ACanvas.Control := Memo1;
AHeight := ACanvas.TextHeight('가') * (Memo1.Lines.Count + 1);
if Memo1.Height < AHeight then
Memo1.Height := AHeight;
finally
FreeAndNil(ACanvas);
end;
Key := 0;
end;
end;
온라인상에서 작성해본 코드라 어떨런지 모르겠군요.
civilian
손동섭 님이 쓰신 글 :
: TMemo에 문자를 입력하면 입력되는 라인만큼
:
: TMemo의 높이를 라인에 맞게끔 늘려주고 싶습니다.
:
: 이전에 어디에서 API호출하여서 처리하는 것을 보았는데
:
: 찾을 수가 없네요??
:
: 고수님들의 조언부탁합니다.
|