Здравствуйте, VladD2, Вы писали:
VD>Вот что мне пришло на ум. View должны быть вложенными! То есть мы должны сделать у View два режима:
VD>1. View отображает данные грида.
VD>2. View является контейнером для других View.
Не нравится мне такой подход. У нас уже есть контейнер — ПАЛ-контрол. Вот в него View и вкладываются. Во вкладывании одного View в друнгой я не вижу ни физического смысла, ни преимуществ (но трудности) для прикладника.
Я бы определил следующие правила:
1) Вся клиентская поверхность ПАЛ-контрола всегда должна быть заполнена.
2) Новые View могут возникать только у границ ПАЛ-контрола
3) При создании View у границы можно выбрать варианты:
— либо он занимает всю границу ПАЛ-контрола и отодвигает все примыкавшие ранее к этой границе View
— либо он "пристраивается" c одного или другого края в тот же ряд или ту же колонку, где находятся все примыкавшие ранее к этой границе View.
Таким образом, его докинг, или вернее все-таки Anchor будет выражаться следующими значениями:
Top
Bottom
Left
Right
Top, Left
Top, Right
Left, Top
Left, Bottom
Right, Top
Right, Bottom
Bottom, Left
Bottom, Right
Все View будут автоматически докированы к нижней и правой области, с тем, чтобы при расширении грида в эти стороны у примыкающих к ним View становились видимыми новые ячейки.
Затем, ввести свойство наличия сплиттеров во всем гриде, принимающих значение:
None,
Inner — сплиттеры имеются только между смежными View, чтобы пользователь мог менять размеры созданных View
All — кроме варианта Inner, сплиттеры имеются еще по левой и верхней границам окна ПАЛ-контрола, чтобы пользователь мог создавать View, перемещая эти сплиттеры от границ (ну, как в Экселе)
И все. Больше ничего не нужно. Я думаю, что описанные тобой "гроздья" View в жизни не пригодятся — сам прикинь.
VD>VG как-то не хорошо. Давай уж тогда GridVieu. А то, во-первых, непонятное сокращение, а во-вторых, при использовании в конкретном гриде будет выглядить по дурацки.
Переименовал класс View на GridView. А интерфейс IView тоже переименовывать?
... << RSDN@Home 1.1.4 beta 2 >>