Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 12:12   #1
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию Сохранение геометрии окна

Есть динамические варианты?
Геометрия окна - это положение окна, его размеры и расположение объектов на форме(так же их размеры и положение).
Видел в 1С и не только, как при открытии окна меняют размеры столбцов таблиц и сами размеры и после закрытия/открытия этого же окна, вся геометрия компонент сохраняется.
Просто не считаю правильным сохранять в Ini или реестр для 30 форм штук по 30 настроек.
Если кто сталкивался подскажите.
Заранее благодарен.

Последний раз редактировалось Drugnir; 12.01.2012 в 13:11.
Drugnir вне форума Ответить с цитированием
Старый 12.01.2012, 13:46   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- а какие возможны варианты?! Если не устраивает записи в реестре, нет желания использовать дополнительный файл (*.ini), то остается только вариант с автомодификацией самой программы?! Это самый гиблый вариант, по моему мнению.
nick42 вне форума Ответить с цитированием
Старый 12.01.2012, 13:58   #3
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

То что записывать в реестр или Ini, это нужно. Но не руками туда все настройки вписывать, а динамически. Допустим вписал я секции, а потом в соответствующую секцию при закрытии формы вписались все настройки.
представляю это как-то так.
Drugnir вне форума Ответить с цитированием
Старый 12.01.2012, 19:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну так сохраните в событии OnDestroy, а в OnCreate загрузите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2012, 10:16   #5
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну так сохраните в событии OnDestroy, а в OnCreate загрузите.
Это-то понятно, я спрашивал про динамический способ записи и чтения. Есть ли такой способ и может ли кто мне подсказать его.
Drugnir вне форума Ответить с цитированием
Старый 13.01.2012, 10:29   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Drugnir Посмотреть сообщение
Это-то понятно, я спрашивал про динамический способ записи и чтения. Есть ли такой способ и может ли кто мне подсказать его.
Что Вы понимаете под "динамическим способом"?
Перезапись при изменении размеров окна? Тогда событие OnResize формы.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.01.2012, 11:02   #7
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Есть у формы размеры и положение и у компонент. Динамически запись геометрии окна, я имею ввиду, то что мне не надо писать Form1.Top =... Button1.Height =... и т.д., т.е. перечислять все настройки самому.
Т.е. если два окна отличаются хотя бы на одну кнопку мне не надо было в настройках самому вручную дописывать параметры этой кнопки, тем более что настроек бывает много.
Вот для этого мне и нужна динамическая процедура на запись и чтение геометрии(состояния) окна.
Drugnir вне форума Ответить с цитированием
Старый 13.01.2012, 12:10   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Есть два пути решения вашей проблемы.
1. Объявить все окна как диалоговые. Тогда при любом разрешении экрана, они будут сохранять свои размеры неизменными.
2. Установить для программы эксклюзивный режим. В этом случае, разрешение экрана будет устанавливаться так, как Вы его установите.
Размеры и расположение компонентов и в 1-м и во 2-м случае меняться не будут.
Есть ещё способ (компромиссный). Делаете фреймы и вызываете их по мере необходимости. На форме располагаются только компоненты которые по природе своей могут менять размеры. Например Memo, RichEdit и т.д.
Можно использовать перестраиваемые панели. В общем выбор большой, смотря чего Вы добиваетесь.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.01.2012, 14:03   #9
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Спасибо, за ответ. но это немного не то. Проблема вот в чем. Пользователь меняет размер окна, подгоняет размеры полей таблиц под себя и еще кое какие манипуляции. После закрывает окно. И при повторном открытии у него точно такое же состояние окна, как и перед закрытием, т.е. те же размеры окна и те же размеры полей таблиц какие установил он и т.д. Так вот это мне и надо динамически записывать при OnClose в файл, а не перечислять все компоненты и их состояние лично.
Drugnir вне форума Ответить с цитированием
Старый 13.01.2012, 17:57   #10
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Чисто гипотетически существование такого "визарда" маловероятно. Если Вы "на стороне" сохраняете параметры целой кучи компонентов, то они не могут быть универсальны. Можно (самому) написать универсальный обработчик формы, где в цикле по всем объектам сраниваются габариты или, допустим, ширины колонок таблиц в состоянии "до" и "после", и сохраняются "на стороне" те, которые "после".
По другому - не представляю... .
nick42 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++: немного геометрии)) Blondy Помощь студентам 7 02.04.2011 14:59
Задача по геометрии (мат. методы) XYLIGANXYL Общие вопросы по Java, Java SE, Kotlin 5 12.02.2011 22:20
Задача по геометрии на С Matadora Помощь студентам 6 17.09.2010 10:09
C#, Visual Studio, Создание окна и сохранение в своем формате.как? lexluter1988 Помощь студентам 2 14.05.2010 21:55
Помогите решить задачу по геометрии Prototype Свободное общение 2 25.02.2008 21:24