안녕하세요.
저는 메모를 스크롤 할때나, 커서로 메모를 상하로 이동후에
보이는 메모의 최상단의 라인번호가 얼마인지를 알고 싶습니다
ex}
11111111111111111 .......
22222222222222222 안보이는 부분
33333333333333333 .......
------------------
l4444444444444444 l .......
l5555555555555555 l
l... l 보이는 부분
l... l .......
------------------
위의 예제와 같다면 현재 메모에 보이는 글자는 444444444
라는 부분 부터지요. 즉 요 라인 번호를 알고 싶어서요.
만약 스크롤등으로 메모의 내용이 바뀔 경우에 그 라인번호를
알고자 합니다.
memo의 caret이나 Trect와관련이 있는것 같은데 저는 도저히
모르겠네요.
꼭 답변을 부탁드립니다.
도움이 되실지는 모르겠지만...
제가 아는 팁을 올립니다...
메모의 현재 라인 번호 알아내기...
funtion GetCurrLine(Memo:TMemo) : Integer;
Result := Memo.Perform(EM_LINEFROMCHAR,Memo.SelStart,0);
end;
메모에서 현재 보이는 라인수 알아내기...
function GetVisibleLine(Memo :TMemo) : Integer;
var
Metric : TTextMetric;
DC : hDC;
begin
DC := GetWindowDC(Memo.Handle);
GetTextMetrics(DC,Metric);
Result := (GetTextRect(Memo).Bottom div Metric.tmHeight);
end;
function GetTextRect(Memo : TMemo) : TRect;// 텍스트 가 쓰여지는 영역 알아내기...
var
IParam : TRect;
begin
Memo.PerForm(EM_GETRECT,0,Integer(@IParam));
Result := IParam;
end;
아무조록 도움이 되시기를 바랍니다.
김경완 wrote:
> 안녕하세요.
>
> 저는 메모를 스크롤 할때나, 커서로 메모를 상하로 이동후에
> 보이는 메모의 최상단의 라인번호가 얼마인지를 알고 싶습니다
>
> ex}
> 11111111111111111 .......
> 22222222222222222 안보이는 부분
> 33333333333333333 .......
> ------------------
> l4444444444444444 l .......
> l5555555555555555 l
> l... l 보이는 부분
> l... l .......
> ------------------
> 위의 예제와 같다면 현재 메모에 보이는 글자는 444444444
> 라는 부분 부터지요. 즉 요 라인 번호를 알고 싶어서요.
>
> 만약 스크롤등으로 메모의 내용이 바뀔 경우에 그 라인번호를
> 알고자 합니다.
>
> memo의 caret이나 Trect와관련이 있는것 같은데 저는 도저히
> 모르겠네요.
>
> 꼭 답변을 부탁드립니다.