|
|
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
У меня есть процедура сохранения параметров формы (координат и сплитеров) в INI-файл. Эта процедура отрабатывает в том числе и на WM_WINDOWPOSCHANGED. Ситуация такая: закрываю приложение - всё сохраняется нормально. Ставлю брэкпоинт на первой строке Create главной формы и к этому моменту INI-файл уже изменён на дефолтные (дизайн-таймные) параметры. Что у нас происходит до Create у формы? Я уже завёл глобальную переменную Locked, решаю где её делать TRUE . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2019, 21:30 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Для решения проблемы воспользовался Application.Tag Но всё же интересно что происходит до Create если во всех учебниках onCreate это исток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2019, 21:52 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusДля решения проблемы воспользовался Application.Tag Но всё же интересно что происходит до Create если во всех учебниках onCreate это исток Воспользуйся отладчиком и кнопкой F7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2019, 21:54 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Писать на диск состояние при любом перемещении/изменении -- это фейл. Надо делать это либо при закрытии формы/приложения, либо писать в память/переменную, а при закрытии формы/приложения сбрасывать уже на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 00:26 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
JaDi, не вижу криминала. С какой частотой Вы любите перемащать формы? Вопрос риторический. В любом случае спасибо за Ваше мнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 11:35 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusJaDi, не вижу криминала. "Спасибо" скажут пользователи недорогих SSD. Любая дисковая операция при этом ведет к лишнему дерганью антивируса, а тот в свои логи еще чего-нить будет запихивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 12:51 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusНо всё же интересно что происходит до Create если во всех учебниках onCreate это исток Во-первых, Create и OnCreate это две очень разные вещи. Между первым и вторым происходит очень много всего. Выкинь учебники, открой для себя исходники VCL. Во-вторых, окно перемещается при создании. Сурпрайз? Да, именно так написана уже упомянутая VCL. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 13:02 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, это проблема антивируса. Пользователь сделал действие я хочу это запомнить. И использовать даже в случае крэша приложухи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 16:43 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, уже ни разу не сюрпрайз. Как раз и рассчитывал получить полезную инфу запостив сюда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 16:45 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusDimitry Sibiryakov, уже ни разу не сюрпрайз. Как раз и рассчитывал получить полезную инфу запостив сюда? бл?*:!, что это за диалект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 16:50 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
ёёёёё, смирись и имей толерантность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 17:02 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusКак раз и рассчитывал получить полезную инфу запостив сюда? Это ты зря. Ни букварь, ни MSDN, ни исходники VCL тебе тут пересказывать не будут. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 17:35 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rus, А что у вас передаётся с ini-файла?, каковы значения по-умолчанию? Что произойдёт, если вы удалите ini-файл? Можно увидеть код процедуры OnCreate ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 22:51 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rus, до OnCreate происходит то, что вы кликаете мышкой на запуск приложения и в этот момент инициализируются переменные и читается ваш ini-файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 22:56 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
WM_WINDOWPOSCHANGED.... Вы устанавливаете ограничение на размер или положение формы до того, как записать это в ИНИ-файл?. Надеюсь значения по-умолчанию в третьем параметре файла меньше, чем размер этого ограничения.... В любом случае, покажите ваш код OnCreate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 23:04 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
хто тут?! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 15:50 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusУ меня есть процедура сохранения параметров формы (координат и сплитеров) в INI-файл. Эта процедура отрабатывает в том числе и на WM_WINDOWPOSCHANGED. Ситуация такая: закрываю приложение - всё сохраняется нормально. Ставлю брэкпоинт на первой строке Create главной формы и к этому моменту INI-файл уже изменён на дефолтные (дизайн-таймные) параметры. Что у нас происходит до Create у формы? Я уже завёл глобальную переменную Locked, решаю где её делать TRUE . Я тоже так делаю, только в OnShow. Восстанавливаю размер и положение окна закрытого в последний раз. Сохраняю в OnClose. Все работает. Можно еще использовать OnActivate/OnDeactivate. Но так как формы у меня модальные, то я с этим не парюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 17:29 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Belotsky Serge, я тоже сохранял я onClose, а сейчас хочу сохранять сразу по изменению положения. Код приводить не имеет смысла, если принцип нужен поясню. На сообщение WM_WINDOWPOSCHANGED вешаю обработчик, который сначала проверяет новые параметры формы с текущими. Если изменили, то разблркирует сохранение параметров (Applucation.Tag присваивает определённое значение. Потом inherited собственно изменяет параметры формы. Процедура сохранения перед изменением INI проверяет значение Application.Tag и только если оно разблокировано (имеет определённое значение), то сохраняет. И теперь перед созданием всех форм мы блокируем Tag,а разблркирует только в нужных событиях формы и, как писал выше, при определённых условиях в обработчик сообщения. за термин "блокировать Tag" не ругайте, кому надо - тот поймёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:22 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
полная хрень. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:23 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
А как оно работает при развёртывании на весь экран или минимизации ты уже проверил? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:24 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, у меня bsSizeToolWin. При закрытии уходит в трей. В трее меню с выходом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:41 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusу меня bsSizeToolWin. При закрытии уходит в трей. И ты уже проверил как она реагирует на пункт меню или горячую кнопку Windows "минимизировать все окна"? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:48 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, проверил - не реагирует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 18:50 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusСтавлю брэкпоинт на первой строке Create главной формы Вы понимаете разницу между Create и OnCreate? Если да, то точно ли правильно используете термины? OxY63rusЭта процедура отрабатывает в том числе и на WM_WINDOWPOSCHANGED Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 20:14 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
softwarer Если да, то точно ли правильно используете термины? OK. В первой строке OnCreate. softwarerЗачем? Хочу помнить даже при крахе приложения. Или это сверхзадача ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2019, 19:21 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63russoftwarer Если да, то точно ли правильно используете термины? OK. В первой строке OnCreate. Ты исходники vcl посмотри. OnCreate вызывается либо в самом конструкторе, либо сразу после него, в зависимости от состояния OldCreate. После того, как форма готова (созданы все объекты, назначена оконная процедура, назначены обработчики), она регистрируется в объекте Screen. И, если форму нужно показать - вызывается SetWindowPos. А у тебя к этому времени уже обработчик ждет. О чем тебе сразу сказали: 21987592 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2019, 19:50 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusJaDi, не вижу криминала. С какой частотой Вы любите перемащать формы? Вопрос риторический. В любом случае спасибо за Ваше мнение Так ваша программа на WM_WINDOWPOSCHANGED и при любом изменении Z-ордера будет дергаться к диску. Такой подход может быть оправдан только для критически важных сервисных программ, но не клиентских приложений. Ну ладно, бог с ним, ресурсом диска, так это же еще и замедляет систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2019, 20:00 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Сергей N, нет Выше я описал случаи когда разрешаю приложению дёргать диск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2019, 20:50 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusХочу помнить даже при крахе приложения. Или это сверхзадача ? Нет, сверхзадача это сделать так, чтобы приложение работало и не падало. Но раз Вам это не под силу... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2019, 21:09 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
OxY63rusOK. В первой строке OnCreate. Тогда уже ответили - раньше неё выполняется чёртова уйма всего. В том числе считываются из dfm дизайн-таймовые настройки. OxY63rusХочу помнить даже при крахе приложения. Или это сверхзадача ? А зачем писать приложение так, чтобы оно крашилось? Это не сверхзадача, просто неудобно и неэффективно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 00:29 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
softwarer, ответы все получены. Дополнительных вопросов нет. Всех благодарю. Dimitry Sibiryakov, крах не моего кода, а, например, падение напряжения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2019, 11:44 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
10.10.2019 11:44, OxY63rus пишет: > > крах не моего кода, а, например, падение напряжения. не нужно пытаться решать аппаратные проблемы софтовыми способами. аспирин УПСа! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2019, 11:46 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
ну для объективности всего могу сказать, что хром даже отключение питание переживает - состояние сохраняется. другое дело, конечно, каких это ресурсов требует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2019, 17:47 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
makhaonкаких это ресурсов требуетбраузеры щаз вообще один из основных видов дрючащих непрерывно диск, на их фоне беспокойсто об износе винта невинными сохранениями конфига при перетаскивании окна просто умиляют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2019, 18:06 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
vavanбраузеры щаз вообще один из основных видов дрючащих непрерывно диск "... скоро будет одно сплошное телевидение..." © зы. я тоже не понимаю, когда одна единственная вкладка браузера запускает 7-8 параллельных процессов, напрягая при этом винт (особенно hdd). Так никому памяти не хватит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 08:44 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
TIniFile в Delphi7 очень медленно работает, писАть туда при каждом чихе - тормозить программу и ее интерфейс. Использую TMemIniFile - он на диск не сбрасывает пока не скажешь, в оперативке работает быстро. Читаю настройки в OnCreate формы, записываю в OnDestroy. Сбрасываю на диск при закрытии приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 11:12 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
14.10.2019 11:12, fraks пишет: > Читаю настройки в OnCreate формы, записываю в OnDestroy. > Сбрасываю на диск при закрытии приложения. у поциента задача падучая. до OnDestroy не доходит подчас. потому и лисапед. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 11:27 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
fraksTIniFile в Delphi7 очень медленно работает, писАть туда при каждом чихе - тормозить программу и ее интерфейс. Использую TMemIniFile - он на диск не сбрасывает пока не скажешь, в оперативке работает быстро. Читаю настройки в OnCreate формы, записываю в OnDestroy. Сбрасываю на диск при закрытии приложения. Насчёт скорости TIniFile: это обёртка над соответствующими функциями WinApi. При записи в Ini скорее всего будет выполняться работа с файловым кэшем, плюс Windows, вероятно, пытается как-то улучшать производительность при работе с ini-файлами. Тормоза бывают только если будет мешать антивирус (зависит также от размера ini-файла и от интенсивности записи в него). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 12:59 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
fraksTIniFile в Delphi7 очень медленно работает, писАть туда при каждом чихе - тормозить программу и ее интерфейсможно же не использовать глючные/тормозные компоненты и/или писать асинхронно. а гробануться досрочно что угодно может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 15:19 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Что если не сразу писать в ini, а сделать через таймер? Там где раньше писалось - Timer.Enabled := False; Timer.Enabled := True; А уже в OnTimer - записать ini? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 08:48 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
DevillioЧто если не сразу писать в ini, а сделать через таймер? А смысл?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 12:04 |
|
||
|
Жизненный цикл формы
|
|||
|---|---|---|---|
|
#18+
Dimitry, ну ТС же жалуется, что у него отрабатывает сохранение еще при несоздавшейся форме. добавить проверку, создан ли таймер. во-вторых, пореже будет "дергать диск". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 14:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038953]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 535ms |

| 0 / 0 |
