|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
AkinaО! по коду сперва должна выводиться единичка, а на самом деле наоборот... ни на какие мысли не наталкивает? ... Очень даже наталкивает. Форма сработала быстрее макроса, потому и сначала инстанс поднялся, а потом макрос дернул функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:22 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Akina...Тогда попробуйте вот такой код: Код: vbnet 1. 2. 3.
Даже пробовать не буду. В моей реализации нет нужды в New Project. И прекратите "портить" мой пример своими врезками. Работайте с тем как я описал, ибо ваши врезки сродни применению полутораметрового лома в ремонте наручных швейцарских часов. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:27 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
PredeclaredФорма сработала быстрее макроса, потому и сначала инстанс поднялся, а потом макрос дернул функцию.Увы, в корне неверно. И ещё раз повторю - в Вашем коде нет инстанса. Вот в моём последне - есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:50 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
AkinaPredeclaredФорма сработала быстрее макроса, потому и сначала инстанс поднялся, а потом макрос дернул функцию.Увы, в корне неверно. Ну добавьте в дебаг вывод VBA.Timer в обоих случаях. Кстати говоря, у меня и на 2003 и на 2007 форма дергает инстанс впереди макроса. AkinaИ ещё раз повторю - в Вашем коде нет инстанса. Вот в моём последне - есть. А весь экшн выполняет дух святой. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:54 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
У меня с таймером как-то так получается: ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:59 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Михаил, можете у себя глянуть с таймером? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 19:02 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Form_Open 14418.86 Class_Initialize 14418.86 CheckIt 14418.9 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 02:05 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
AkinaPredeclaredФорма сработала быстрее макроса, потому и сначала инстанс поднялся, а потом макрос дернул функцию. Увы, в корне неверно. Akina, та не, все верно. Не спешите. Все так, как говорит Predeclared. Сначала идет открытие формы frm1(проверял в 2010-ом). На событии открытия происходит первое обращение к классу Project, что вызывает его инициализацию. Потом уже срабатывает макрос, вызывая функцию CheckIt. Андрей просто вас путает тем, что он изменил в описании класса атрибут Attribute VB_PredeclaredId с False на True, а вы этого, очевидно не заметили. Считайте, что это равнозначно объявлению на уровне стандартного модуля: Public Project as New Project. Только я не понял зачем, чтобы определить что сработает первым, форма или функция из макроса, пользоваться для этого каким-то классом. Просто в соотв.процедурах сделать Debug.Print "загрузка формы" и Debug.Print "выполнение функции из макроса", что первым будет выведено в окно отладки, того и тапки. mds_world Если нам заранее неизвестен порядок загрузки взаимозаменяемых объектов, то логичнее пользоваться одним. То, что зависимость объектов от порядка загрузки можно обойти, не заменяет общего надежного решения. Ну, почему неизвестен? Ну, вот вывели в окно отладки сообщения и узнали, что первой грузится форма. Как выяснили, так происходит в 2010-ом, 2007-ом, 2003-ем. Было бы непоследовательно, если бы Microsoft изменили этот порядок. Или речь о том, что функция, которую запускает макрос и код открытия стартовой формы выполняются в разных потоках и поэтому может так получится, что в силу разных причин выполнение кода в одном потоке обгонит выполнение кода в другом? Это можно проверить (в одном или в разных), но мне не хочется, просто не вижу причин, почему это должно быть в разных потоках. Как думаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 03:46 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Читал не все, может и не понял. В AutoExec нужна одна строчка - Запуск программы, например, Start() И уже в модуле в функции Start() прописывается порядок выполнения команд/ проверок. И уже в конце Start()-а открываем форму и тд. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 04:03 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
mds_world, спасибо. Вакшуль Сергей... Только я не понял зачем, чтобы определить что сработает первым, форма или функция из макроса, пользоваться для этого каким-то классом. ... Совершенно не за чем. Применение класса призвано рассечь логику старта приложения на две части: 1. неуправляемую авторВ среде MS Access выполнение автоматической загрузки макроса Autoexec и стартовой формы выполняется параллельно и асинхронно. Механизм какого-либо управления порядком выполнения безотносительно к содержимому указанных процедур - отсутствует. 2. управляемую ЯПричем "гарантированный порядок выполнения процедур" (описанный в процедуре инициализации) абсолютно не зависит от того, какой объект автозагрузки сработал первым, и поднял инстанс класса. А с тем, кто первый дергает, мы уже по ходу решили заодно "поиграться". :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 09:48 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Горе от ума... А ведь 99 % прогеров даже не знают что есть такая проблема, херачат потихоньку... Сказали им в детстве, что макросы это отстой и нет пробемы... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 10:12 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
PredeclaredПрименение класса призвано рассечь логику старта приложения на две части: 1. неуправляемую ... 2. управляемую я просто не пойму что вообще обсуждается, зачем нужны эти две части? Это все из-за вот этих фраз: JossЯ считал что при загрузке базы сначала выполняется макрос autoexec, а потом грузится форма, указанная в параметрах загрузки базы AkinaВ среде MS Access выполнение автоматической загрузки макроса Autoexec и стартовой формы выполняется параллельно и асинхронно. Какие этому есть подтверждения? Я их не вижу, поэтому и спросил, зачем вообще применять класс. Если в приложении задана стартовая форма, то сначала грузится она, а потом уже выполняется макрос. Какие проявления асинхронности? В чем? Не хочется делать лишних тестов. Кто-то может это подтвердить? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 10:30 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Вакшуль Сергей... Если в приложении задана стартовая форма, то сначала грузится она, а потом уже выполняется макрос. ... Мне НЕ удалось это опровергнуть своими немногочисленными потугами. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 11:13 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
Из-за чего возникла проблема Тут кто-то спрашивал, почему используются сразу autoexec и стартовая форма. Поясняю. Для работы окно Access программно растягивается на весь экран. Чтоб не растягивать вручную (большие формы). Задачи находятся на сервере и работают с ними при помощи сервера терминалов. Почему-то получается так, что если стартовую форму прописываешь последней строкой макроса autoexec, то окно Access уменьшается до "нормального" размера (не на весь экран). А если форму грузишь как стартовую то окно Access остаётся максимальным. Почему так происходит, не разобрались. Вот и организуем загрузку программ подобным образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2016, 15:32 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
А что мешает максимизировать окно Акцесса программно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2016, 16:34 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
MrShinА что мешает максимизировать окно Акцесса программно?Третья строка в предыдущем посте. Окно Access максимализируется программно, но потом почему-то сбрасывается в обычный режим. Возможно это особенности нашей конфигурации и у других такого не будет. Локально на компьютере всё отрабатывается правильно при запуске формы из макроса autoexec. А вот при работе через терминальный сервер такие фокусы и происходят ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 10:14 |
|
Порядок выполнения макроса autoexec и загружаемой формы
|
|||
---|---|---|---|
#18+
vmagГоре от ума... А ведь 99 % прогеров даже не знают что есть такая проблема, херачат потихоньку... Сказали им в детстве, что макросы это отстой и нет пробемы... Я точно не знал. Как жить дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 11:20 |
|
|
start [/forum/topic.php?fid=45&msg=39211622&tid=1613690]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 328ms |
total: | 474ms |
0 / 0 |