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
[47331] Re:답변 감사드립니다. 추가 질문이 있는데요...
허접 [khlee0123] 1227 읽음    2006-12-07 15:59
ㅡㅡ;;

18 이라는 숫자는 좌우의 화살표 버튼, 가운데 스크롤 버튼의 width or height 값이네요.
ㅡㅡ;;


허접 님이 쓰신 글 :
: 장성호님, 로리시아님..
: 답변 정말 감사드립니다.
: 엄청나게 큰 도움이 되었습니다.  ㅠ.ㅜ
: 장성호님께 더 여쭤볼게 있는데요.
: 샘플 소스에서요.
:
: if(Msg.LParamLo>18 && Msg.LParamLo< ScrollBar6->Width-18)
: 이 부분,
: if(abs((Msg.LParamLo-18)-iScrPos)>9)
: 이 부분에서
: 값을 비교하고 가감을 하는데, 저 값들의 의미가 정확하게 무엇인지 모르겠습니다.
: 값을 다른 값으로 변경하니까, 스크롤바 움직일때 변화는 생기는데,
: 커서가 위치한 곳으로 스크롤바가 이동하는 부분이 있고, 그렇지 않은 부분이 생기더라구요.
: 스크롤바는 상하로 되어 있습니다.
: 답변 부탁 드릴께요.
:
: 그리고 다시 한번 감사드린다는 말씀 드립니다.  ^^
:
: 장성호 님이 쓰신 글 :
: : 1. 예쁘게 꾸미는것은?
: :     지난번 세미나때 tip break 에 Image을 ScrollBar의 배경으로 넣어서 하는 방법이 소개되었습니다.
: :     뭐 원리는 간단해요 Scrollbor의 크기에 따라 bitmap 이미지를 짤라서 paint이벤트때 draw해주는것뿐...
: :     원리는 간단하지만 고려할 사항들이 많을꺼예요
: :
: : 2. 스크롤바 크릭한곳 바로가기
: :    음... MouseDown 때.. 처리해주면 되는데..
: :    TStrollBar 의 기본 이벤트에는   MouseDown 이 없으므로  서브 클래싱해서 구현하면 됩니다.
: :    
: :    -----샘플----
: : //---------------------------------------------------------------------------
: : TWndMethod OrigProc;
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: :     OrigProc=ScrollBar1->WindowProc;
: :     ScrollBar1->WindowProc = ScrollWinProc;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::ScrollWinProc(TMessage& Msg)
: : {
: :      if(Msg.Msg==WM_LBUTTONDOWN)
: :      {
: :         if(ScrollBar1->Kind==sbHorizontal) //좌우 스크롤 Bar인경우..
: :         {
: :             if(Msg.LParamLo>18 && Msg.LParamLo< ScrollBar1->Width-18) //좌우 맨끝에 버튼을 클릭한 경우를 제외
: :             {
: :                 int iScrPos=ScrollBar1->Position*(ScrollBar1->Width-36)/ScrollBar1->Max;
: :                 if(abs((Msg.LParamLo-18)-iScrPos)>9) //가운데 스크롤 버튼위에 mouse_down인경우를 제외
: :                 {
: :                     //전체 Max값에서 Mouse를  Click한 위치(Msg.LParamLo )의 좌표를 계산해  Position 값을 변경해줌
: :                     // 18 이라는 숫자는 좌우의 화살표버튼 , 가우데 스크롤 버튼의 width (Vertical인경우 Height) 입니다.
: :                     ScrollBar1->Position = (ScrollBar1->Max * Msg.LParamLo)/(ScrollBar1->Width-36);
: :                     return; //직접 scroll을 움직여 줬으므로 .. mouse_down messge처리를 끝낸다.
: :                 }
: :             }
: :         }
: :         else                              //상하 스크롤 Bar인경우..
: :         {
: :             if(Msg.LParamHi>18 && Msg.LParamHi< ScrollBar1->Height-18) //좌우 맨끝에 버튼을 클릭한 경우를 제외
: :             {
: :                 int iScrPos=ScrollBar1->Position*(ScrollBar1->Height-36)/ScrollBar1->Max;
: :                 if(abs((Msg.LParamHi-18)-iScrPos)>9) //가운데 스크롤 버튼위에 mouse_down인경우를 제외
: :                 {
: :                     //전체 Max값에서 Mouse를  Click한 위치(Msg.LParamHi )의 좌표를 계산해  Position 값을 변경해줌
: :                     ScrollBar1->Position = (ScrollBar1->Max * Msg.LParamHi)/(ScrollBar1->Height-36);
: :                     return;
: :                 }
: :             }
: :         }
: :      }
: :
: :      //MOUSE_LBUTTONDOWN 이벤트가 Scrollbar의 scroll영역 안에서 일어난것을 제외한
: :     // 모든 메세지는 원래(Original ) WindowProc에서 처리..
: :      OrigProc( Msg );
: : }
: : //
: :
: : 허접 님이 쓰신 글 :
: : : 허접입니다.
: : : 얼마전에도 글을 올렸었는데, 아무런 답변을 안주시네요..
: : : 컴포넌트중에, scrollbox, checklistbox, 그리고 scrollbar..
: : : 이 컴포넌트들을 보면, 윈도우에서 기본으로 제공하는 style의 모양만 나오잖아요?
: : : 여기에 이것들을 좀 이쁘게 꾸미려고 합니다.
: : : 그런데 방법을 모르겠네요.  html 태그도 아니고..  쩝~
: : : ㅇ ㅏ.. 그리고 한 가지 더 있습니다.
: : : 스크롤바를 클릭하면 클릭한 곳으로 스크롤바를 바로 이동시키고 싶은데, 그게 되는지요..
: : : 예를 들어 winamp나 media player의 equalizer 처럼 마우스 클릭을 하면 해당 위치로 바로 가는것 처럼요..
: : : 답변 좀 주세요~  ㅠ.ㅜ
: : : 부탁드립니다~

+ -

관련 글 리스트
47306 도와주세요.. 허접 843 2006/12/05
47319     Re:도와주세요.. - 스크롤바 크릭한곳 바로가기 장성호 1528 2006/12/06
47330         답변 감사드립니다. 추가 질문이 있는데요... 허접 989 2006/12/07
47331             Re:답변 감사드립니다. 추가 질문이 있는데요... 허접 1227 2006/12/07
47309     Re:도와주세요.. 로리시아 960 2006/12/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.