OberonCore https://forum.oberoncore.ru/ |
|
GUID у View? https://forum.oberoncore.ru/viewtopic.php?f=24&t=2622 |
Страница 1 из 1 |
Автор: | Иван Кузьмицкий [ Вторник, 04 Май, 2010 14:17 ] |
Заголовок сообщения: | GUID у View? |
Делаю "ресайзер" для формы. Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы. Вариант с обёрткой для каждого отображения не очень-то подходит, т.к. обёртка экранирует особенности отображения, например, элементов управления Controls. Лучше всего было бы привязывать настройки стратегии к уникальному идентификатору (типа GUID) каждого внедрённого отображения. Но у отображений нет GUID. А почему бы и не заиметь, собственно? |
Автор: | Евгений Темиргалеев [ Вторник, 04 Май, 2010 16:51 ] |
Заголовок сообщения: | Re: GUID у View? |
Иван Кузьмицкий писал(а): Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы. а зачем сохранять именно в отображении?Если мне память не изменяет, в QT, для каждого "контейнера" задаётся отдельный механизм Layout, который размещает контролы внутри области, занимаемой контейнером. И этот Layout с внедрёнными контролами никак не пересекается. Эта схема мне при использовании показалось более удобной, нежели хранение в контроле, как, например, в Делфи. И реализация раздельная... За основу взять копию Forms и... |
Автор: | Axcel [ Вторник, 04 Май, 2010 16:55 ] |
Заголовок сообщения: | Re: GUID у View? |
Т.е. хранить в отдельном специальном списке с уникальным номером элемента? Что-то вроде дельфовой коллекции? Item произвольный, но унаследованный от базового типа? Это мне было бы понятно, но в КП - ББ вроде бы другая стратегия: шина сообщений, которые распознаются по типу, соответственно зачем тогда GUID? |
Автор: | Иван Кузьмицкий [ Вторник, 04 Май, 2010 17:27 ] |
Заголовок сообщения: | Re: GUID у View? |
Евгений Темиргалеев писал(а): Иван Кузьмицкий писал(а): Для каждого внедрённого отображения надо сохранять стратегию изменения размера и позиции при смене размеров формы. а зачем сохранять именно в отображении?Евгений Темиргалеев писал(а): в QT, для каждого "контейнера" задаётся отдельный механизм Layout, который размещает контролы внутри области, занимаемой контейнером. И этот Layout с внедрёнными контролами никак не пересекается. То есть, параметры размещения (ну и ресайзинг, стало быть) контролируются этим Layout?Евгений Темиргалеев писал(а): За основу взять копию Forms и... Всё равно, нужна возможность отличать экземпляры отображений друг от друга.Axcel писал(а): шина сообщений, которые распознаются по типу, соответственно зачем тогда GUID? Затем, что два отображения одинакового типа могут иметь разные стратегии ресайза. Например, одна таблица изменяет размер, а другая только перемещается по форме.
|
Автор: | Илья Ермаков [ Вторник, 04 Май, 2010 17:30 ] |
Заголовок сообщения: | Re: GUID у View? |
Положим, в тексте рядом с другими вьюшками лежит наш невидимый Layout Manager. Он вполне может собрать всю информацию о соседях, хранить на них ссылки, а при сохранении и загрузке - сохранять и загружать их. Вот и всё. Единственное, он должен периодически проверять все свои вьюшки на предмет того, что они ещё лежат в тексте, если нет - то "отпускать" на сборку мусора. |
Автор: | Иван Кузьмицкий [ Вторник, 04 Май, 2010 17:33 ] |
Заголовок сообщения: | Re: GUID у View? |
Я примерно так и сделал - бросил отображение ресайзера на форму, и он может заниматься переразмещением других контролов. Только со ссылками сомневаюсь - разве адрес отображения при следующей загрузке будет тот же самый? |
Автор: | Илья Ермаков [ Вторник, 04 Май, 2010 17:51 ] |
Заголовок сообщения: | Re: GUID у View? |
Так зачем Вам тот же самый? Важно, что после ReadStore будет установлена связь с той же вьюшкой, на которую была ссылка при WriteStore. А внутри Вашего layout-а уже нумеруйте эти ссылки, как хотите (массив их имейте, и т.п.). Да просто список, где каждый пункт хранит ссылку на вьюшку - и все параметры к ней. |
Автор: | Иван Кузьмицкий [ Вторник, 04 Май, 2010 17:58 ] |
Заголовок сообщения: | Re: GUID у View? |
Хм-м, использовать это свойство хранилища я как-то не додумался... Стало быть, мой layout сохраняет список всех вьюх, обнаруженных им на форме. Записал вьюшку - тут же записал её стратегию. Ведь неважно, сколько было попыток WriteStore для конкретной вьюшки - она сохранится только один раз! При загрузке из файла, читаем в обратном порядке. Да, изящненько выходит... Надо попробовать! |
Автор: | Info21 [ Вторник, 04 Май, 2010 18:51 ] |
Заголовок сообщения: | Re: GUID у View? |
Иван Кузьмицкий писал(а): Хм-м, использовать это свойство хранилища я как-то не додумался... Да, изящненько выходит... Надо попробовать! Стараюсь повторять при каждой возможности, что Store'ы надо особо прочувствовать в силу краеугольности этого механизма для динамических структур данных.
|
Автор: | Иван Кузьмицкий [ Воскресенье, 16 Май, 2010 14:15 ] |
Заголовок сообщения: | Re: GUID у View? |
Всё прекрасно работает! Ссылки на вьюшки спокойно кладутся в хранилище, рядом с ними сохраняются настройки для каждой, и в обратном порядке считываются из хранилища. Stores - сила. |
Автор: | Иван Кузьмицкий [ Среда, 19 Май, 2010 21:27 ] |
Заголовок сообщения: | Re: GUID у View? |
С этим TabView морока... Не работает, короче, с ним схема с размещением вьюшек. Дело в том, что при интернализации, TabView всегда создаёт копию вьюшки. Получается так, что мой ресайзер сохраняет одну вьюшку, а после открытия документа, TabView создаёт другую... |
Автор: | Иван Кузьмицкий [ Пятница, 21 Май, 2010 22:13 ] |
Заголовок сообщения: | Re: GUID у View? |
Победил я, дорогие товарищи. Для StdTabViews ввёл дополнительную процедуру сверки внедрённых отображений. Они сверяются с теми, что накоплены в разметке (layout), учитывая координаты ограничивающего прямоугольника l, t, r, b. Другими словами, если зарегистрирована стратегия для некоей области l, t, r,b на форме, то отображение в этой области и будет ресайзится. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |