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
[54040] 매번 감사합니다
번외편 [wifemylove] 2059 읽음    2008-07-23 09:21
매번 감사합니다. 원하는 기능이 있네요
그럼 이만~ 자주 부탁드리겠습니다.



장성호 님이 쓰신 글 :
: TMemo 를 비롯하여 TListBox TListView ,TStringGrid 등 ScrollBar를 Scroll시키는 방법은 대게 비슷합니다.
:
: TMemo를 기존으로 몇가지 방법을 정리해 보겠습니다.
:
: 방법1. SelStart를 Text-Length 즉 줄끝으로 정하기.. (꼼수)
:
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:   Memo1->SelStart=Memo1->Text.Length()-2;
:   Memo1->SelLength=1;
: }
: 

:
:
: 방법2. WM_VSCROLL 메세지에   SB_BOTTOM을 wParam으로
:
:
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
: //  SendMessage(Memo1->Handle,WM_VSCROLL, SB_BOTTOM, 0);
:   Memo1->Perform(WM_VSCROLL, SB_BOTTOM, 0);
: }
: //SendMessage와 Perform을 거의 똑같음
: 

:
:
: 방법3. TMemo 같은 EDIT 컨트롤의 경우 EM_LINESCROLL 메세지를 이용
:
: 
: void __fastcall TForm1::Button4Click(TObject *Sender)
: {
:   Memo1->Perform(EM_LINESCROLL,0,Memo1->Lines->Count-1);
: }
: 

:
: 방법4. 기타 Scroll관련 메세지 이용
:
: 
: void __fastcall TForm1::Button5Click(TObject *Sender)
: {
:   Memo1->Perform(EM_SCROLL,SB_BOTTOM,0);
: 
: //  기타 SB(ScrollBar) 메세지
: //#define SB_LINEUP           0                  //한줄 위로
: //#define SB_LINELEFT         0                // 왼쪽 한줄
: //#define SB_LINEDOWN         1             // 아래로 한줄
: //#define SB_LINERIGHT        1              // 오른쪽으로 한줄   
: //#define SB_PAGEUP           2              //한 페이지 위로
: //#define SB_PAGELEFT         2             //한 페이지 왼쪽으로
: //#define SB_PAGEDOWN         3          //한 페이지 아래로
: //#define SB_PAGERIGHT        3           //한 페이지 오른쪽으로
: //#define SB_THUMBPOSITION    4       // ???
: //#define SB_THUMBTRACK       5        // ???
: //#define SB_TOP              6                // 맨 위로
: //#define SB_LEFT             6                // 맨 왼쪽으로 
: //#define SB_BOTTOM           7           // 맨 아래로 
: //#define SB_RIGHT            7              // 맨 오른쪽으로 
: //#define SB_ENDSCROLL        8        // ???
: 
: }
: 

:
:
: 방법2 가 일반적으로 많이 쓰이는것 같습니다.
: TMemo뿐만 아니라 다른 Control에도 대게 잘 적용되고 하니까요
:
: 그럼..
:
:
: 번외편 님이 쓰신 글 :
: : Memo에 받은 데이터를 표시하다가 100줄 이상 넘어가면
: : 윗줄부터 삭제하려고 합니다
: : 그래서 이런방법을 써봤는데 삭제가 되긴 되는데 마우스 포인터가
: : Memo 맨위에 있네요. 이 마우스 포인터를 맨아래로 내리려면 어떻게 해줘야하나요?
: :
: :                 if( data[serial_number] == 0x0d )
: :                 {
: :
: :                         *Str_Data = (char)data[0];
: :                         for(j=1;j<serial_number  ;j++)
: :                         {
: :                                 *Str_Data = *Str_Data + (char)(data[j]);
: :                         }
: :
: :                         Memo1->Lines->Add(*Str_Data )  ;
: :                         while(Memo1->Lines->Count>100)Memo1->Lines->Delete(0);  <-- 이부분입니다.
: :                         serial_number = 0;
: :                        
: :                 }
: :                 else
: :                 {
: :                         serial_number++ ;
: :                 }

+ -

관련 글 리스트
54029 Memo 에 대해 질문 있습니다 번외편 1190 2008/07/22
54035     Re:Memo 에 대해 질문 있습니다 장성호 1639 2008/07/23
54040         매번 감사합니다 번외편 2059 2008/07/23
54032     Re:Memo 에 대해 질문 있습니다 둘리 1394 2008/07/22
54039         감사합니다. 번외편 1266 2008/07/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.