막장

Window_HorzCommand 개조 3시간 걸려서 단 1줄 개조.

by 탐험가 posted Dec 23, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄


원래는 Window_HorzCommand에서

 

  #--------------------------------------------------------------------------
  # ● 선두의 자리수 설정
  #--------------------------------------------------------------------------
  def top_col=(col)
    col = 0 if col < 0
    col = col_max - 1 if col > col_max - 1
    self.ox = col * (item_width + spacing)
  end

 

이렇게 된 부분이 있었습니다.

 

그 부분을 아래와 같이 개조했습니다. 그리고 주석을 넣어서 원리를 설명했습니다.

 

그러니까 이전의 VXA의 수평 커맨드의 경우, 4열로 되어 있는데 이것을 3열로 개조한 후, 커맨드를 여러 개 넣어 보니까, 0번째, 1번째, 2번째, 3번째, 4번째까지는 문제가 없는데 5번째와 6번째가 창 밖으로 커서가 옮겨가는 모양새를 관찰할 수 있었습니다.

 

위에서 col_max가 3이면 화면 표시에 3열로 나타난다는 것을 뜻합니다. 그런데 col, 즉 인덱스가 3-1, 즉 2보다 커지면 인덱스가 2인 것으로 간주하고, 즉 최대치가 2가 되기 때문에 self.ox, 원점은 항상 2 *(커서의 폭)이 되는 것이었습니다. 이렇게 되면 5번째인가의 항목까지만 스크롤이 되고 그 다음부터는 스크롤 없이 커서가 창 밖으로 나가 버립니다.

 

그래서 아래와 같이 수정해주면 된다는 것을 알기까지 걸린 시간이 무려 3시간입니다. col_max를 item_max로 고쳐주면, 항목이 7개일 경우 7번째 항목에 도달하기 전까지 스크롤이 됩니다.

 

col_max를 늘려서 한 창에 여러 항목이 나오게 하는 방법도 있겠지만, 항목이 아주 많을 경우 스크롤을 해야 하기 때문에...

 

무려 3시간이 걸렸는데도 겨우 한 줄을 간신히 고칠 수 있었으니 강좌라고 할 수도 없을 듯한데 누군가는 저처럼 3시간 삽질을 하지 않기를 바라면서도 어디 올려야 할지는 모르겠어서 그냥 막장으로 올립니다.

 

 

  #--------------------------------------------------------------------------
  # ● 선두의 자리수 설정
  #--------------------------------------------------------------------------
  def top_col=(col)
    col = 0 if col < 0
    col = item_max - 1 if col > item_max - 1
    self.ox = col * (item_width + spacing)
=begin
    여기서 col이란 인덱스를 뜻한다.
    인덱스가 1일 경우 칼은 0보다 크기 때문에 0이 아니며,
    칼맥스보다 크지도 않기 때문에 2도 아니므로, 1 그대로 남는다.
    하지만 그 다음 숫자인 3으로 넘어가려면 어떻게 해야 할까?
    칼맥스보다 클 경우를 조건으로 하면 안된다는 소리다.
    아이템의 갯수보다 클 경우를 조건으로 해야 된다는 뜻인데.
=end   
  end