Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[2667] [답변] CHUNGSJ/ Memo나DBMemo컴포넌트에서 커서위치알
u9389040 [ ] 2354 읽음    1998-05-04 22:46
안녕하세요.
메모 컴포넌트를 가지고 할 수 있는 여러가지 방법들입니다.
하시는 프로그램에 도움이 되시기를....


1) 현재 라인번호 알아내기
메모에서 현재 Caret이 위치하고 있는 줄이 몇 번째 줄인지를 리턴한다.
Label1.Caption := IntToStr(GetCurrLine(Memo1));
function GetCurrLine(Memo : TMemo) : integer;
begin
      Result := Memo.Perform(EM_LINEFROMCHAR, Memo.SelStart, 0);
end;

2)  현재 컬럼번호 알아내기
메모에서 현재 Caret이 위치하고 있는 줄에서 몇 번째 컴럼인지를 리턴한다.
Label1.Caption := IntToStr(GetCurrCul(Memo1));
function GetCurrCul(Memo : TMemo)) : integer;
begin
     Result := Memo.SelStart - Memo.Perform(EM_LINEINDEX, GetCurrLine(Memo), 0);
end;

3) Caret를 원하는 라인으로 이동하기
Caret을 원하는 위치로 이동시키는데 이때 넘겨주는 값이 라인의 한계를 벗어나면 그 안 범위로 위치시킨다.
만약 라인의 맨끝으로 이동시키고 싶다면 아주 큰값을 주면된다.
SetCurrLine(Memo1. 10);
procedure SetCurrLine(Memo : TMemo; Value : integer);
begin
   if Value < 0 then Value := 0;
   if Value > Memo.Lines.Count then Value := Memo.Lines.Count;
   Memo.SelLength := 0;
   Memo.SelStart := Memo.Perform(EM_LINEINDEX, Value, 0);
end;

4) Caret을 원하는 컬럼으로 이동하기
SetCurrCul(Memo1. 10);
procedure SetCurrCul(Memo : TMemo; Value : integer);
var
   CurrLine : integer;
begin
   CurrLine := GetCurrLine(Memo);
   if Value < 0 then Value := 0;
   if (Value > Length(Memo.Lines[CurrLine])) then
      Value := Length(Memo.Lines[CurrLine]);
   Memo.SelLength := 0;
   Memo.SelStart := Memo.Perform(EM_LINEINDEX, CurrLine, 0) + Value;
end;


+ -

관련 글 리스트
2667 [답변] CHUNGSJ/ Memo나DBMemo컴포넌트에서 커서위치알 u9389040 2354 1998/05/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.