Q&A

  • in64의 범위를 갖는 스크롤바를 제작할 수 있을까요?
안녕하세요. 제가 만들고 있는 프로그램에서 스크롤바를 사용하고 있습니다.
델파이의 헬프를 보니 스크롤바의 Position프로퍼티는 integer형으로 되어있던데요, 다른 부분은 다 똑같고 Position(그리고 Max, Min...)만 int64형으로 되어있는 컴포넌트를 만들어서 사용하려고 합니다. 문제는 제가 컴포넌트를 만들어 본 적이 한번도 없다는 건데요, ㅠㅠ. 책 몇개를 뒤적여 봤는데 책에는 기본적인 예제들만 들어있어서 어떻게 해야 할지 모르겠습니다.

1. 제 생각처럼 Position관련된 부분만 int64도 되어있는 스크롤 바를 만드는 것이 가능한가요??
2. 그리고 만약 이것이 간단하게 해결된다면 코드를 어떻게 짜야 할지를 염치불구하고 묻고 싶습니다 ^^;;

모두 좋은 하루 되십시오.
7  COMMENTS
  • Profile
    최용일 2005.12.06 21:55
    안녕하세요. 최용일입니다.

    굳이 Int64의 범위가 필요할런지 의문이네요...

    Int64의 범위를 가지면 프로그램적으로 계산은 편리할지 모르겠지만... Word범위이상부터는 별차이가 없습니다.

    화면 해상도가 많아봤자 2000을 넘어가지 않습니다. Max값이 2000만 되도 충분하다는 말이죠...

    Int64로 해서 100억분의 1이나 Integer로 스케일링해서 천만분의 0.001이나 화면상에서는 똑같이 보입니다.

    Int64를 지원하는것은 프로그램밍할때 Integer범위를 넘어서는 값들을 스케일링할 필요가 없어서 계산이 편리하다는 것외에는 아무런 장점이 없을것 같네요... 단점이라면 컴포넌트 제작하는데 들어가는 시간이겠죠...

    Int64를 지원하도록 스크롤바를 제작하는것은 가능하지만 굳이 제작해야 될 필요성이 있는지 다시한번 생각해보시길...

    ^^ 항상 즐코하세요...

  • Profile
    임형준 2005.12.06 22:10

    일반적으로는 필요하지 않지만 제가 만드는 프로그램이 비상식적으로 큰 데이터를 다루는 프로그램입니다.
    그래서 integer범위를 넘어가는 스크롤 바가 반드시 필요한 상황입니다.


  • Profile
    강두헌 2005.12.09 11:38
    중간에 껴들어서 죄송..

    제가 보기엔 최용일님 답변을 오해하신 부분이 있는거 같아서요.
    스크롤바는 그 마우스로 막대기를 위/아래로 끌고 다니면서 원하는 곳을 쉽게 찾으려고 할때 사용합니다. 보통의 경우 스크롤바에 있는 막대기는 데이타의 수에 따라 그 크기가 변합니다. 데이타가 많아지면 막대기 크기는 작아지지요. 그렇지만, 아무리 데이타가 많아도 일정 크기 이상은 작아지지 않습니다. 그 이상 작으면 마우스로 잡기가 힘들테니까요.
    그리고 그 막대기를 잡고 위 아래로 이동할 수 있는 범위는 모니터의 해상도에 따라 달라집니다. 예를 들어 프로그램에서 그 막대기를 움직일 수 있는 범위가 1000이라고 해도 모니터에 나타날 수 있는 범위가 100이라면 프로그램에서 실제 막대기의 위치를 0-10까지 변화시켜도 모니터엔 아무런 변화가 없을 것입니다. 반대로 모니터에서 막대기의 위치를 1만 변화시켜도 실제 값은 10이 변하게 될것이고요.
    그렇다면 사실 막대기를 움직이는 범위가 1000이라는게 이 경우 아무런 의미가 없다는 뜻입니다. 100만 되도 충분한거지요.
    한가지 의문이 생기지요. 그럼 100개 이상의 데이타가 있을 경우 스크롤을 어떻게 움직이냐는 건데요.
    10000개의 데이타가 있을 경우를 생각해 보면, 프로그램에서 스크롤을 제어할 경우, 0에서 1500번째 데이타로 이동할 경우 실제 스크롤바는 0에서 15로 이동시키면 되는거지요. 1513번째 데이타도 역시 그냥 15이고요. 어차피 그 이상의 변화는 화면에서 보이지 않기 때문에 의미가 없기 때문입니다.
    반대로 모니터에서 스크롤을 움직일경우 0에서 15로 값이 바뀌면 1500번째 데이타로 이동하면됩니다. 1513번째 데이타로 정교하게 이동하고 싶으셔도 할 수 없습니다. 애초에 모니터가 100으로 제한되어 있기 때문에 스크롤바의 해상도를 아무리 높여놔도 실제 사용자는 그렇게 정교하게 움직일 수 없기 때문입니다.

    그래서 64bit해상도를 가지는 스크롤바는 사실상 전혀 필요가 없는 것입니다. 엄청난 데이타가 있어도 실제 스크롤바는 모니터에 맞는 해상도만 가지면 충분하고 그 이상의 해상도는 아무런 효과가 없기 때문입니다.

  • Profile
    최용일 2005.12.07 16:52
    안녕하세요...

    Int64범위의 비상식적인 데이터라고해서 갑자기 떠오르는건데요...

    데이터크기가 10바이트짜리 10억건의 데이터만해도 10G바이트의 메모리 용량이 필요할것 같은데 시스템사양이 어떻게 되는지 궁금하네요...

  • Profile
    최용일 2005.12.06 22:41
    안녕하세요. 최용일입니다.

    필요하다는데야 제가 더이상 뭐라 말할 입장은 아니네요...

    스크롤바는 윈도우 공용컨트롤이고 이게 윈도우메세지를 통해서 값을 설정하고 다른 컨트롤과 통신합니다. 이건 정해진 규격이기 때문에 이걸 고쳐서 어떻게 하기는 힘들것 같네요...

    새로 만드셔야 하는데... 문제는 스크롤바와 연동하는 기존의 컨트롤들도 Integer범위만을 지원하기 때문에 스크롤바뿐만아니라 스크롤바와 연동하는 컨트롤들도 다시 제작하여야 한다는거죠...

    간단하게 해결될 수 있는 문제는 아닌것 같습니다. 시간을 들여서 손수 제작을 하셔야 될듯합니다.

    ^^ 항상 즐
  • Profile
    임형준 2005.12.06 23:57

    바쁘실텐데 답변 주셔서 정말 감사합니다.^^;; 근데 저위에서 '스크롤바와 연동하는 컨트롤들'은 무엇을 말씀하시는 건가요? 델파이 헬프에서 나오는 하이랄키상에서 위에 있는 컨트롤 들을 말씀하시는 것인가요???
  • Profile
    최용일 2005.12.07 00:20
    안녕하세요. 최용일입니다.

    상속이나 그런것과는 상관이 없구요...

    스크롤바는 혼자서 사용되는 경우는 거의 없고 다른 컨트롤과 연동되어 사용되죠... 홀로 독립적으로 사용된다면야 아무런 문제가 없죠...

    흠... 무슨 말이냐 하면...

    예를들어 델파이의 TMemo를 보면 화면에 글을 입력했을때 줄수가 많아지면 스크롤바가 생기죠? 이때 생긴 스크롤바의 스크롤위치를 바꾸면 메모(TMemo)가 스크롤됩니다... 반대로 메모를 스크롤했을때 스크롤바의 위치가 변경되죠...

    이렇게 서로 액션을 취해서 반응하는 컨트롤을 말하는것입니다.

    이때 서로간의 통신에서 윈도우 메세지를 사용하는데 윈도우에서 정해진 규칙이 있어서 스크롤바만 Int64를 지원한다고 되는것이 아니라는 것을 말하는겁니다...

    스크롤바에선 20억번째로 이동하라고 명령을 내렸는데 이것과 연동하는 메모에서는 첫번째줄로 이동한다거나 하면 안되겠죠...

    ^^ 항상 즐코하세요...

    • 테니스
    • 2005.12.08 17:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이승근
    • 2005.12.08 06:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.08 08:47
      round함수는 Banker's Rounding 라는 걸 쓰기때문에 반올림할때 5의 경우 앞의 수가 짝수이면 버리고 홀...
    • 이중철
      2005.12.08 19:46
      답변자가 이야기 하는 Banker's Ronding 쓰는 것 맞습니다. 그리고 추가로 결코 82.5233 이라는 숫자를 반...
    • 정원혁
    • 2005.12.08 06:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채팅
      2005.12.08 16:40
      델파이에 포함된 인터베이스는 5유저라이센스인 것으로 기억하고 있습니다. Firebird를 사용하는 것이 ...
    • 윤황현
    • 2005.12.08 03:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.09 04:03
      안녕하세요. 최용일입니다. http://user.chol.com/%7Evvad152e/indexk.htm vvad152e@chollian.net ...
    • 강남길
    • 2005.12.08 00:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.08 05:20
      object Inspector 에 sql 부분에서 select 날짜 from table1 order by 날짜 desc 하시면 가장 최근에...
    • 강남길
      2005.12.09 20:02
      장덕곤님 답변 잘보았읍니다. 감사드리구요 답변주신대로  TQuery 에 object Inspector 에 sq...
    • 김영대
    • 2005.12.08 00:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2005.12.13 20:30
      SQL문 중에 replace가 있더군요. update 테이블 set 필드명 = replace(필드명, 원본문자열, 바꿀문자열...
    • 최용일
      2005.12.09 03:56
      안녕하세요. 최용일입니다. 제가 DB쪽은 전혀 모르지만... Select한 결과값을 에디팅할 수 있다는 이야...
    • 김영대
      2005.12.10 01:13
      답변 감사합니다...^^ 다시 한번 SQL 공부를 해야할거 같습니다..ㅠㅠ 에구...SQL이 왜 이리 나의 길...
    • 이승근
    • 2005.12.07 21:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이경원
    • 2005.12.07 18:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.07 22:38
      procedure TForm_2001.StringGrid1DblClick(Sender: TObject); begin   SHOWMESSAGE(IntToStr(...
    • 정경철
    • 2005.12.07 03:46
    • 4 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.12.07 04:51
      흠...정보가 부족합니다. 하다못해 문법오류가 나는 쿼리문으라도.... 동적쿼리인가요? 해당 쿼리를 ...
    • 정경철
      2005.12.07 19:20
      동적 쿼리 문입니다... 그런데 똑같은 조건으로 검색을 하면 될때는 잘 되는데 안될때는 계속 쿼리 문법...
    • TeamB
      2005.12.08 20:29
      흠, 일단 동적쿼리 라면...쿼리가 제대로 만들어지는지 확인을 해보셔야겟군요. 에러가 날때의 전체쿼리...
    • 정경철
      2005.12.17 01:26
      현재까지 추정 한 바로는 쿼리 문법 오류가 아니고 테이블을 연결 후 얼마동안 사용을 안하면 연결이 끈...
    • 이경원
    • 2005.12.07 02:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.07 06:04
      안녕하세요. 최용일입니다. 델파이 2005는 사용해본적이 없어서 맞을지는 모르겠지만... 저 에러는 ...
    • 신철우
    • 2005.12.06 22:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.06 23:07
      안녕하세요. 최용일입니다. 컨트롤들은 Parent의 영역에서만 보입니다. Parent를 설정하세요... sz_m...
    • 임형준
    • 2005.12.06 21:32
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.06 21:55
      안녕하세요. 최용일입니다. 굳이 Int64의 범위가 필요할런지 의문이네요... Int64의 범위를 가지면 ...
    • 임형준
      2005.12.06 22:10
      일반적으로는 필요하지 않지만 제가 만드는 프로그램이 비상식적으로 큰 데이터를 다루는 프로그램입니...
    • 강두헌
      2005.12.09 11:38
      중간에 껴들어서 죄송.. 제가 보기엔 최용일님 답변을 오해하신 부분이 있는거 같아서요. 스크롤바는 ...
    • 최용일
      2005.12.07 16:52
      안녕하세요... Int64범위의 비상식적인 데이터라고해서 갑자기 떠오르는건데요... 데이터크기가 10바...
    • 최용일
      2005.12.06 22:41
      안녕하세요. 최용일입니다. 필요하다는데야 제가 더이상 뭐라 말할 입장은 아니네요... 스크롤바는 ...
    • 임형준
      2005.12.06 23:57
      바쁘실텐데 답변 주셔서 정말 감사합니다.^^;; 근데 저위에서 '스크롤바와 연동하는 컨트롤들'은 무엇을...
    • 최용일
      2005.12.07 00:20
      안녕하세요. 최용일입니다. 상속이나 그런것과는 상관이 없구요... 스크롤바는 혼자서 사용되는 경우...
    • 이종민
    • 2005.12.06 21:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 돌고래
      2005.12.08 08:06
      form property에 보면 screen center이 있습니다.....즐코!!!
    • sallyslaw
      2005.12.07 02:58
      폼 property 의 포지션을 설정하는 방법 또는 스크린 값을 가져와서 중앙 계산 하는 방법 또는...여러가지 ...
    • 신철우
    • 2005.12.06 17:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • Marek
      2005.12.06 19:08
      Marek입니다. 당연 가능하죠 var sz_map : array[1..100] of array[1..2] of integer; 또는 va...
    • 신철우
      2005.12.06 20:18
      감사합니다. 2차원배열 4개를 넣고 아래와 같이 하면 에러가 나네요. 왜 그럴까요? SetLength(sz_map,...
    • 이중철
      2005.12.07 00:23
      델파이에 이미 있는 TPoint 레코드 타입을 사용하세요 var sz_map : array[1..100] of  TPoin...
    • 정지호
    • 2005.12.06 03:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.06 20:17
      안녕하세요. 최용일입니다. 음... 아무래도 리소스파일을 실행파일에 링크안하신듯... 메인폼소스 보...
    • 정원혁
    • 2005.12.06 03:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이경원
    • 2005.12.06 01:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 우소
      2005.12.07 02:05
      이전 버전 소스가 2005로 컴파일이 가능 하면 문제가 없을것 같군요. 일반 프로젝트 처럼 열면 오른쪽...
    • 이희진
      2005.12.06 03:01
      SND_LOOP -> SND_ASYNC or SND_LOOP
    • 임정미
      2005.12.06 19:30