Странная работа Anchors
Модератор: Модераторы
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Странная работа Anchors
Кидаю на форму StringGrid1, Edit1, Button1 ( Edit1, Button1 находятся выше StringGrid1).
Через редактор привязок привязываю Edit1 к StringGrid1 (сосед снизу).
В свою очередь, StringGrid1 привязываю к Button1. Пока зазоры нулевые, все красиво. Но, как только я увеличиваю зазор между StringGrid1 и Button1, Edit1 начинает отдаляться от StringGrid1, хотя у них зазор между собой указан нулевым. Это баг или я чего-то не понимаю?
Через редактор привязок привязываю Edit1 к StringGrid1 (сосед снизу).
В свою очередь, StringGrid1 привязываю к Button1. Пока зазоры нулевые, все красиво. Но, как только я увеличиваю зазор между StringGrid1 и Button1, Edit1 начинает отдаляться от StringGrid1, хотя у них зазор между собой указан нулевым. Это баг или я чего-то не понимаю?
Выкладывайте тестовый проект.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
По ходу еще заметил. Если двигать размеры формы в рантайме, то кнопка остается на месте, а StringGrid и Edit меняют свои позиции, хотя привязаны только к Button.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
В меру моего понимания это не баг. Edit отодвигается из-за того, что у StringGrid указан верхний зазор 20. Значение зазора используется в любом случае, это нужно для обеспечения корректной работы возможности autosize. Чтобы достичь желаемого, нужно выставить зазор у StringGrid в 0, а у кнопки - 20.
StringGrid и Edit меняют свои позиции в рантайме, так как у них не задано ни левой, ни правой привязки.
StringGrid и Edit меняют свои позиции в рантайме, так как у них не задано ни левой, ни правой привязки.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
В таком случае, нужно делать привязку кнопки к стринггриду. А если нужно привзяать еще какой-то объект к кнопке с другим зазором, как тогда? Логично предположить, что зазор должен относиться к отступлению объекта (который привязываем) от исходного(к которому привязываем), а не наоборот?
По второму вопросу. Если нет привязок, то почему меняются параметры Left i Top?
Добавлено спустя 12 минут 39 секунд:
PS.
2 Максим
Ваш вариант сработал. но я тогда не понимаю, что означает нижний зазор при отсутствии нижней привязки?
И что означает величина в середине между зазорами?
По второму вопросу. Если нет привязок, то почему меняются параметры Left i Top?
Добавлено спустя 12 минут 39 секунд:
PS.
2 Максим
Ваш вариант сработал. но я тогда не понимаю, что означает нижний зазор при отсутствии нижней привязки?
И что означает величина в середине между зазорами?
По первому вопросу. Это поведение by design. См. здесь. Хочу заметить, что в таком поведении есть серьёзные резоны. Да, есть некоторые ограничения на хитрые привязки компонентов с разными зазорами к одной и той же стороне другого компонента. Ну и что? Разве такие дизайны форм бывают на практике? Да и потом, в большинстве случаев это ограничение реально обойти.
По второму вопросу. А почему они не должны меняться, если привязок нет? В этом случае поведение при ресайзе никак не определено. Чтобы компоненты не ползали, их нужно привязать. По-моему, логично. Опять же, можно почитать вышеприведённую ссылку.
По второму вопросу. А почему они не должны меняться, если привязок нет? В этом случае поведение при ресайзе никак не определено. Чтобы компоненты не ползали, их нужно привязать. По-моему, логично. Опять же, можно почитать вышеприведённую ссылку.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Спасибо Максим!
По второму вопросу, я Вас понял. Дело в том, что по умолчанию как раз и включены верхняя и левая привязки, просто раньше на это не обращал внимания. Правда, если смотреть редактор привязок, то привязки есть, а к какому объекту - пусто.
Первый вопрос буду изучать.
По второму вопросу, я Вас понял. Дело в том, что по умолчанию как раз и включены верхняя и левая привязки, просто раньше на это не обращал внимания. Правда, если смотреть редактор привязок, то привязки есть, а к какому объекту - пусто.
Первый вопрос буду изучать.
Если объект не указан, это значит, что привязка делается к объекту, содержащему данный.
Они не игнорируются, они с ним складываются. Ну написано же всё по ссылке.
Не уверен что это то что ты хотел изобразить... но хоть в общем посмотриш.
А вообще за Anchors багов не наблюдал, шикарная вещь.
А вообще за Anchors багов не наблюдал, шикарная вещь.
