почему флажок не перемещается при изменении размера стека?

Я сделал стек, который отображает строки текста, которые меняют свою ширину при изменении размера стека. Столбцы категории меняют свое положение при изменении размера, но флажок не меняется.

Что мне не хватает в коде? Какие изменения необходимо внести?

См. код в стеке, который можно скачать здесь: https://dl.dropboxusercontent.com/u/99863601/Data%20grid%20Form-variable%20line%20height%2Bcheckbox.zip

Заранее спасибо.

керам


person mark    schedule 11.12.2013    source источник


Ответы (2)


Если я понимаю, чего вы пытаетесь достичь здесь, тогда в вашем обработчике LayoutControl внесите следующие изменения:

 --   put the rect of btn "btnCheck" of me into theFieldRect
 --   put item 3 of pControlRect - 5 into item 3 of theFieldRect
 --   set the rect of btn "btnCheck" of me to theFieldRect
 set the left of btn "btnCheck" of me to the right of fld "cat" of me

Однако я думаю, что изменение размера поля Cat тоже неверно. Попробуйте что-то вроде:

on LayoutControl pControlRect
   set the right of btn "btnCheck" of me to item 3 of pControlRect-4
   set the right of fld "Cat" of me to the left of btn "btnCheck" of me
   get the rect of fld "Line" of me
   put the left of fld "Cat" of me into item 3 of it
   set the rect of fld "Line" of me to it
   put the formattedHeight of fld "Line" of me + item 2 of it into item 4 of it
   set the rect of fld "Line" of me to it
   put item 4 of it into item 4 of pControlRect
   set the rect of graphic "Background" of me to pControlRect
end LayoutControl

Чтобы отредактировать скрипт LayoutControl, вам нужно открыть инспектор свойств сетки данных и нажать кнопку Row Behavior.... Это представит редактор сценариев для поведения шаблона строки.

person Monte Goulding    schedule 12.12.2013
comment
Привет Монте, спасибо за ваш ответ. Верхняя часть кода работает нормально. Я экспериментировал с нижними 7 строками, помещая их в код карты или код стека, но они вообще не работают. Вот ссылка на стек: dropbox.com/s/ug694xdr2rjvfka/ - person mark; 12.12.2013
comment
Я добавил примечание о том, как редактировать скрипт LayoutControl. - person Monte Goulding; 12.12.2013
comment
Еще раз спасибо, Монте. Теперь я поместил эти 7 строк в скрипт Row Behavior, но ничего не появилось. - person mark; 12.12.2013
comment
Ах... извините, у меня была небольшая проблема с одной строкой. Я исправил это выше и завершил весь обработчик, так что вы можете просто скопировать и вставить ;-) - person Monte Goulding; 12.12.2013
comment
Теперь это работает намного лучше. И это выглядит проще, чем исходный код, который у меня был. Спасибо! - person mark; 13.12.2013
comment
Я хотел бы проголосовать за ваш ответ, но я не могу этого сделать :-( - person mark; 13.12.2013
comment
Если вас устраивает мой ответ, вы можете принять его как правильный, установив флажок. Похоже, кто-то на SO любит отрицать мои сообщения без видимой причины и без объяснения причин... не уверен, почему это так... - person Monte Goulding; 13.12.2013
comment
Теперь как 1-строчный вид, так и вид «Полная строка» работают нормально. Но странно то, что скрипты поведения для обоих представлений одинаковы!?? - Я не понимаю, почему? Стек можно скачать отсюда: stackoverflow.com/questions/20542113/ - person mark; 13.12.2013

Потому что у DataGrid нет этой функции. Если вы будете использовать диспетчер геометрии, свойства GM не копируются из флажка в шаблоне в флажки в фактическом DG. Так что ГМ не работает. Возможно, вы могли бы написать собственный скрипт, который устанавливает право всех флажков на положение относительно ширины карточки:

on resizeStack
  lock screen
  repeat with x = 1 to number of buttons
    if the style of btn x is "checkbox" then
      set the right of btn x to the width of this cd - 100
    end if
  end repeat
  unlock screen
end resizeStack

К сожалению, это также не работает с сеткой данных, потому что DG также выполняет некоторое (или значительное) изменение размера самостоятельно.

Было бы намного проще создать свой собственный.

person Mark    schedule 11.12.2013
comment
Спасибо Марк, Ну, создать любой скрипт самостоятельно не так просто, так как я совсем новичок. До сих пор я мог проверить другие примеры стека и части кода и каким-то образом собрать их воедино... Мне нужно узнать намного больше. - person mark; 12.12.2013