OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 13:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 14:17 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Делаю "ресайзер" для формы. Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы.

Вариант с обёрткой для каждого отображения не очень-то подходит, т.к. обёртка экранирует особенности отображения, например, элементов управления Controls.

Лучше всего было бы привязывать настройки стратегии к уникальному идентификатору (типа GUID) каждого внедрённого отображения.

Но у отображений нет GUID. А почему бы и не заиметь, собственно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 16:51 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Кузьмицкий писал(а):
Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы.
а зачем сохранять именно в отображении?

Если мне память не изменяет, в QT, для каждого "контейнера" задаётся отдельный механизм Layout, который размещает контролы внутри области, занимаемой контейнером. И этот Layout с внедрёнными контролами никак не пересекается.

Эта схема мне при использовании показалось более удобной, нежели хранение в контроле, как, например, в Делфи. И реализация раздельная...

За основу взять копию Forms и...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 16:55 

Зарегистрирован: Понедельник, 05 Июнь, 2006 09:49
Сообщения: 327
Откуда: Ленинград, Емельянов Алексей Николаевич
Т.е. хранить в отдельном специальном списке с уникальным номером элемента? Что-то вроде дельфовой коллекции? Item произвольный, но унаследованный от базового типа?
Это мне было бы понятно, но в КП - ББ вроде бы другая стратегия: шина сообщений, которые распознаются по типу, соответственно зачем тогда GUID?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 17:27 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Евгений Темиргалеев писал(а):
Иван Кузьмицкий писал(а):
Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы.
а зачем сохранять именно в отображении?
Конечно, необязательно. Настройки стратегии ресайзинга надо вообще где-то хранить. Только привязывать их необходимо к тому отображению, которому задаётся эта самая стратегия. Проблемы бы не было, если бы каждое отображение имело свой уникальный, глобальный идентификатор (который, к тому же, ещё и сохраняется вместе с отображением)

Евгений Темиргалеев писал(а):
в QT, для каждого "контейнера" задаётся отдельный механизм Layout, который размещает контролы внутри области, занимаемой контейнером. И этот Layout с внедрёнными контролами никак не пересекается.
То есть, параметры размещения (ну и ресайзинг, стало быть) контролируются этим Layout?

Евгений Темиргалеев писал(а):
За основу взять копию Forms и...
Всё равно, нужна возможность отличать экземпляры отображений друг от друга.

Axcel писал(а):
шина сообщений, которые распознаются по типу, соответственно зачем тогда GUID?
Затем, что два отображения одинакового типа могут иметь разные стратегии ресайза. Например, одна таблица изменяет размер, а другая только перемещается по форме.


Последний раз редактировалось Иван Кузьмицкий Вторник, 04 Май, 2010 17:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 17:30 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Положим, в тексте рядом с другими вьюшками лежит наш невидимый Layout Manager.
Он вполне может собрать всю информацию о соседях, хранить на них ссылки, а при сохранении и загрузке - сохранять и загружать их. Вот и всё.

Единственное, он должен периодически проверять все свои вьюшки на предмет того, что они ещё лежат в тексте, если нет - то "отпускать" на сборку мусора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 17:33 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Я примерно так и сделал - бросил отображение ресайзера на форму, и он может заниматься переразмещением других контролов. Только со ссылками сомневаюсь - разве адрес отображения при следующей загрузке будет тот же самый?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 17:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Так зачем Вам тот же самый? Важно, что после ReadStore будет установлена связь с той же вьюшкой, на которую была ссылка при WriteStore. А внутри Вашего layout-а уже нумеруйте эти ссылки, как хотите (массив их имейте, и т.п.).
Да просто список, где каждый пункт хранит ссылку на вьюшку - и все параметры к ней.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 17:58 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Хм-м, использовать это свойство хранилища я как-то не додумался...

Стало быть, мой layout сохраняет список всех вьюх, обнаруженных им на форме. Записал вьюшку - тут же записал её стратегию. Ведь неважно, сколько было попыток WriteStore для конкретной вьюшки - она сохранится только один раз!
При загрузке из файла, читаем в обратном порядке.

Да, изящненько выходит... Надо попробовать!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Вторник, 04 Май, 2010 18:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
Хм-м, использовать это свойство хранилища я как-то не додумался... Да, изящненько выходит... Надо попробовать!
Стараюсь повторять при каждой возможности, что Store'ы надо особо прочувствовать в силу краеугольности этого механизма для динамических структур данных.


Последний раз редактировалось Info21 Воскресенье, 16 Май, 2010 18:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Воскресенье, 16 Май, 2010 14:15 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Всё прекрасно работает! Ссылки на вьюшки спокойно кладутся в хранилище, рядом с ними сохраняются настройки для каждой, и в обратном порядке считываются из хранилища.

Stores - сила.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Среда, 19 Май, 2010 21:27 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
С этим TabView морока...

Не работает, короче, с ним схема с размещением вьюшек. Дело в том, что при интернализации, TabView всегда создаёт копию вьюшки. Получается так, что мой ресайзер сохраняет одну вьюшку, а после открытия документа, TabView создаёт другую...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GUID у View?
СообщениеДобавлено: Пятница, 21 Май, 2010 22:13 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Победил я, дорогие товарищи.

Для StdTabViews ввёл дополнительную процедуру сверки внедрённых отображений. Они сверяются с теми, что накоплены в разметке (layout), учитывая координаты ограничивающего прямоугольника l, t, r, b.

Другими словами, если зарегистрирована стратегия для некоей области l, t, r,b на форме, то отображение в этой области и будет ресайзится.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB