Странная работа Anchors

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Странная работа Anchors

Сообщение GAMER » 20.11.2010 23:00:44

Кидаю на форму StringGrid1, Edit1, Button1 ( Edit1, Button1 находятся выше StringGrid1).
Через редактор привязок привязываю Edit1 к StringGrid1 (сосед снизу).
В свою очередь, StringGrid1 привязываю к Button1. Пока зазоры нулевые, все красиво. Но, как только я увеличиваю зазор между StringGrid1 и Button1, Edit1 начинает отдаляться от StringGrid1, хотя у них зазор между собой указан нулевым. Это баг или я чего-то не понимаю?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение Максим » 21.11.2010 18:15:14

Выкладывайте тестовый проект.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Странная работа Anchors

Сообщение GAMER » 21.11.2010 18:46:41

По ходу еще заметил. Если двигать размеры формы в рантайме, то кнопка остается на месте, а StringGrid и Edit меняют свои позиции, хотя привязаны только к Button.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение Максим » 21.11.2010 19:23:31

В меру моего понимания это не баг. Edit отодвигается из-за того, что у StringGrid указан верхний зазор 20. Значение зазора используется в любом случае, это нужно для обеспечения корректной работы возможности autosize. Чтобы достичь желаемого, нужно выставить зазор у StringGrid в 0, а у кнопки - 20.

StringGrid и Edit меняют свои позиции в рантайме, так как у них не задано ни левой, ни правой привязки.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Странная работа Anchors

Сообщение GAMER » 21.11.2010 20:28:47

В таком случае, нужно делать привязку кнопки к стринггриду. А если нужно привзяать еще какой-то объект к кнопке с другим зазором, как тогда? Логично предположить, что зазор должен относиться к отступлению объекта (который привязываем) от исходного(к которому привязываем), а не наоборот?

По второму вопросу. Если нет привязок, то почему меняются параметры Left i Top?

Добавлено спустя 12 минут 39 секунд:
PS.
2 Максим
Ваш вариант сработал. но я тогда не понимаю, что означает нижний зазор при отсутствии нижней привязки?
И что означает величина в середине между зазорами?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение Максим » 21.11.2010 20:50:17

По первому вопросу. Это поведение by design. См. здесь. Хочу заметить, что в таком поведении есть серьёзные резоны. Да, есть некоторые ограничения на хитрые привязки компонентов с разными зазорами к одной и той же стороне другого компонента. Ну и что? Разве такие дизайны форм бывают на практике? Да и потом, в большинстве случаев это ограничение реально обойти.

По второму вопросу. А почему они не должны меняться, если привязок нет? В этом случае поведение при ресайзе никак не определено. Чтобы компоненты не ползали, их нужно привязать. По-моему, логично. Опять же, можно почитать вышеприведённую ссылку.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Странная работа Anchors

Сообщение GAMER » 21.11.2010 21:04:38

Спасибо Максим!

По второму вопросу, я Вас понял. Дело в том, что по умолчанию как раз и включены верхняя и левая привязки, просто раньше на это не обращал внимания. Правда, если смотреть редактор привязок, то привязки есть, а к какому объекту - пусто.

Первый вопрос буду изучать.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение Максим » 21.11.2010 21:08:55

Если объект не указан, это значит, что привязка делается к объекту, содержащему данный.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Странная работа Anchors

Сообщение GAMER » 21.11.2010 21:36:17

Я верно понимаю, что если значение ячейки "Around" ненулевое, то остальные значения в ячейках(Лево, право, верх, низ) игнорируются?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение Максим » 21.11.2010 23:19:04

Они не игнорируются, они с ним складываются. Ну написано же всё по ссылке.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Странная работа Anchors

Сообщение GAMER » 22.11.2010 00:41:36

Извините. Уже увидел, как-то проскочил. Спасибо за консультации.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Странная работа Anchors

Сообщение qivi » 22.11.2010 05:53:49

Не уверен что это то что ты хотел изобразить... но хоть в общем посмотриш.
А вообще за Anchors багов не наблюдал, шикарная вещь.
11111111.png
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Странная работа Anchors

Сообщение GAMER » 22.11.2010 10:42:22

Нет, это не баг. Я по началу неверно трактовал значения параметров и логику работы.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru