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

C++빌더 Q&A
C++Builder Programming Q&A
[55255] Re:Memo 컴포넌트에 AutoSelection기능 문의드립니다.
장성호 [nasilso] 1198 읽음    2008-11-24 14:24
AutoSelection 프로퍼티는  TCustomEdit 에 있는 것으로
TMemo 또한 TCustomEdit를 상속받습니다.

TMemo에서 AutoSelection 프로퍼티가 안보이는것은
상속되어내려오던 중간에 감쳐져있기 때문이죠


그런데 AutoSelection 프로퍼티가 TMemo에서는 기본적으로 true입니다.

AutoSelection 이 true이니 focus가 가면 당연히 자동 select되어야 하지 않나 생각될껀데

TCustomEdit에서 AutoSelection을 처리하는 부분의 코드를 보면 이유를 알수 있습니다.

procedure TCustomEdit.CMEnter(var Message: TCMGotFocus);
begin
  if FAutoSelect and not (csLButtonDown in ControlState) and
    (GetWindowLong(Handle, GWL_STYLE) and ES_MULTILINE = 0) then SelectAll;
  inherited;
end;


위 코드에서 보면 알수 있듯이

Edit의  style이 ES_MULTILINE  이면 SelectAll을 호출하지 않습니다.
즉  TMemo는 TEdit와 같은 EDIT인데 단지 멀티라인 속성이 다른놈인것이죠

하여튼 TMemo에 focus가 왔을때 전체 선택되게 하려면
TMemo의 OnEnter이벤트 핸들러에서 SelectAll해주시면 됩니다.
void __fastcall TForm1::Memo1Enter(TObject *Sender)
{
    Memo1->SelectAll();
}


그런데 위코드를 실행해보면 TEdit에서랑 뭔가 다른것이 있을것입니다.

즉 Tab으로 focus를 옮겼을때는 동작이 똑같지만 mouse로 클릭해서 focus를 옮겼을경우
Edit는 selection이 되지 않지만 위코드는 마우스 키보드 상관없이 selecttion코드가 동작하죠


그러면 Memo의 OnEnter이벤트 핸들러에서 Mouse로 클릭해서 focus가 이동된 경우만 제외 시키면 되겟죠?
그것은 위에 TCustomEdit의  CMEnter 함수에 방법이 나와있네요

ControlState 에 csLButtonDown  이 포함되어있는지 확인하네요

결론적으로 다음과 같이 TMemo의 OnEnter이벤트에 코딩하면
TMemo의 AutoSelection처럼 동작합니다.

void __fastcall TForm1::Memo1Enter(TObject *Sender)
{
    if(! Memo1->ControlState.Contains(csLButtonDown))
    {
        Memo1->SelectAll();
    }
} 


그럼..


김정훈 님이 쓰신 글 :
: 안녕하세요?
: Edit 컴포넌트에 있는 AutoSelection기능을 Memo 창에서도 구현하고 싶습니다.
: tab키를 누르면 focus가 이동하면서 자동으로 그 안에 있는 글자들 전체가 셀렉트된
: 상태로 하고 싶은데 어떻게 하면 될까요?

+ -

관련 글 리스트
55254 Memo 컴포넌트에 AutoSelection기능 문의드립니다. 김정훈 1144 2008/11/24
55255     Re:Memo 컴포넌트에 AutoSelection기능 문의드립니다. 장성호 1198 2008/11/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.