|
|
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Как грамотней определить, произошли-ли изменения в подчиненной форме? К примеру, выбрали другую запись? Конечно можно на самой подчиненной форме написать код, который будет проверять открыта-ли основная и тогда выполнять необходимый код, но как-то не системно... mahoune ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:14 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Ну что, не присоветуете ничего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:51 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Самым простым выходом будет добавить объектную переменную в основную форму и в собитии Load инициализировать ее, что-то вроде этого Код: plaintext 1. 2. 3. 4. где внедренный - подчиненная форма. А дальше можешь ловить события подчиненной формы. Но, к сожалению, только стандартные события формы. Но можно, если подумать, и написать такое, что можно будет ловить ЛЮБЫЕ(зависит только от твоей фантазии) события. Например, событие нажатия кнопки в подчиненной форме. Если это тебе интересно я могу рассказать как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:53 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Ну почему же не системно? Проверяется через Parent, а определение смены записи вешается на OnCurrent. Ещё момент, если форма подчинённая, то основная вроде как должна быть открыта по умолчанию, ведь подчинённая ей принадлежит (подчиняется) или я не так что-то понял? А почему исполняемы код должен в главной находиться, его так же в подчинённую можно загнать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:54 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Hummer А если подчиненная форма используется не только в одной форме а в 5. И чего мне для в подчиненной SELECT CASE лепить для пяти случаев? mahoune прав, нужно работать с событиями, а обрабатывать там где это действительно нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:59 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
А если у меня подчиненная форма хочет учавствовать в нескольких формах, как быть! А что, неужели никто не реализовал интерфейс, когда на одной форме несколько списков. В одном, скажем, перечень валют, а в другом их курсы. Соответственно выбрав валюту получаешь ее курс во втором списке. Я конечно понимаю, что можно взять сторонний Grid или использовать ListBox Но с формами как-то веселей. Можно менять столбцы и прочее. Про то что в ListBox можно менять - наслышан, даже попробовал, но тут вроде как все стандартно?! mahoune ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:00 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to mahoune Я же тебе написал как это сделать. Если что-то непонятно спроси, не стесняйся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:05 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
В одном, скажем, перечень валют, а в другом их курсы. Соответственно выбрав валюту получаешь ее курс во втором списке. Я конечно понимаю, что можно взять сторонний Grid или использовать ListBox Но с формами как-то веселей. Можно менять столбцы и прочее. Про то что в ListBox можно менять - наслышан, даже попробовал, но тут вроде как все стандартно?! какие проблемы ? данная задача элементарно решается и формами без проблем. в основной создаёшь поле. в нем пишешь =формавалют!ид_валюты с именем связь (к примеру) и привязывешь форму с курсами через подчиненное/основное поле. и всё... стоит выбрать валюту тут же автоматом обновится форма с курсами. и босе ничего не надо городить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:08 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2 Shkurenko Alexander Мда, об этом я и не подумал, каюсь. Хотя сейчас сам посмотрел, в подчинённой форме (используется в 7-и различных формах) у меня сейчас так и написано, через обращение к Parent (как раз Case и используется), но мне такой подход облегчает жизнь - править код при необходимости нужно в одном месте, потому что когда есть 1600 форм очень затруднительно искать, где ещё она используется. Так если обрабатывать там, где это необходимо, то писать Case и не придётся пишется один If в подчинённой:) 2 mahoune Дык, делается 2 подчинённых формы. Первая подчинена главной, вторая первой подчинённой - на главную выносятся поля для связи между двумя подчинёнными (одно или несколько - зависит от задачи), в эти поля ставятся ссылки на значения в первой подчинённой и они являются MasterField-ми для второй подчинённой, всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:13 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2 вадя Как полезно нажимать Refresh перед своим ответом:) Опоздал:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:15 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Hummer > но мне такой подход облегчает жизнь - править код при необходимости нужно в одном месте, потому что когда есть 1600 форм очень затруднительно искать, где ещё она используется Ага представил себе. Ты меняешь (добавляешь, удаляешь, переименовываешь и т.п) контролы которые у тебя завязаны в подчиненной. Чего ты будешь делать? Открывать подчиненную и опять искать в Case? А если у тебя поменялся алгоритм работы подчиненной формы и ты вспоминаешь какие же контролы на форме Parent, а если их много. Бррр. Все-таки лучше в подчиненной форме составить список форм в которых она используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:26 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2 Shkurenko Alexander Контролы не переименовываются - ибо нафига:) Это раз - потому что когда систему программируют 20 человек это очень чревато:) Если контролы добавились и есть необходимость их обрабатывать по событиям каким-либо в подчинённой - то один фиг, код всё равно править, мне пофигу, в какой форме, в главной или в подчинённой. Ещё такой момент - загрузка подчинёной формы происходит раньше главной, так что ввод переменной в этой ситуации не спасёт, если требуется отлавливать событие в подчинённой при загрузке её. А если у тебя поменялся алгоритм работы подчиненной формы и ты вспоминаешь какие же контролы на форме Parent В Аксесе ХП подчинённая форма редактируется в том же окне, что и главная - ничего мне вспоминать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:38 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Hummer >В Аксесе ХП подчинённая форма редактируется в том же окне, что и главная - ничего мне вспоминать не надо. В том то и дело подчиненная форма одна, а родителей много. Поменял подчиненную форму и вперед искать всех родителей. К тому же при твоем подходе страдает переносимость форм и кода, т.е у тебя формы слишком сильно завязаны с друг другом. Это не есть хорошо. У себя же я могу написать определенный список событий которые генерит эта форма. И уже во всех главных формах работать с этой формой как с законченной компонентой (написал положил на сервер в SourceSafe). Вот тут то и есть выигрыш при написании программы несколькими людьми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 19:51 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Погодите-погодите. Как грамотней определить, произошли-ли изменения в подчиненной форме? К примеру, выбрали другую запись? Какие могут быть изменения? Судя по всему, только Current и AfterUpdate. А почему бы не добавить в подчиненную форму такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Надо отслеживать изменения - напиши в соответствующей главной форме процедуру Public Sub MyChildFormChanged. Или нужно что-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 21:29 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Все заработало как сказал вадя . Есть ли смысл настраивать подчиненные/основные поля уже только после открытия основной формы? Или они для в DesignMode и так записываются в свойства объектов основной формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 21:46 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Ну вот, пришел Geo и все испортил :). С On Error Resume Next ты это неплохо придумал даже пока и возразить нечем, но mahoune просил чтобы было системно, а винды так не работают ;). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 21:51 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2Geo, Form_Current не проверял, но After_Updatre точно не срабатывает по переходу на другую запись, но этим-то и занимается Current, как я полагаю! Но в целом идея очень занимательная... On Error Goto Next не поменяет значения в других процедурах On Error Goto Label:??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 21:52 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2Mahoune Изменения, как я имел в виду, это не только фильтрация/сортировка/переход по записям (Сurrent), а еще и собственно изменения (Before/AfterUpdate:) Влияет. Т.е. после кода, который может (или должен) вызывать ошибку нужно писать On Error Resume Next ' код, который может сгенерить ошибку, на которую не нужно обращать внимания On Error Goto IhaveError ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 21:59 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
Ой. В других - не поменяет. После End Sub текущей процедуры On Error становиться Goto 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 22:01 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2Шкуренко Александр А слона-то я и не приметил :)) Ну нравиться мне On Error :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 22:08 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Geo Подожди! Поймаю я тебя еще на On Error :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 23:41 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Geo & all Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. При работе с объектом Err нужно быть крайне осторожным. В частности в приведенном примере необходимо добавить обработку событий в процедуру MyChildFormChanged(). Например On Error Goto 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 08:51 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
2 Shkurenko Alexander В том то и дело подчиненная форма одна, а родителей много. Поменял подчиненную форму и вперед искать всех родителей. Зачем???? Написал же - я изменяю Parent - и в ней же вижу подчинённую - там Case - по имени родителя (этого же) - правлю я его абсолютно так же, как правил бы и в родителе, а на все остальные родительские, где она используется мне пофиг - так как там ничего не поменялось:) Такой момент ещё - у нас всё меняется по утверждённому ТЗ, а не по тому, как пришла тётя Клава и что-то сказала. Переносимость не страдает, уж поверьте, перенести могу одну главную и одну подчинённую и всё будет работать, так же как и в вашем случае. P.S. Ещё раз повторяю, весь код держится в подчинённой форме, потому что она грузится раньше и есть события при её загрузке, которые влияют на контролы в основной, при этом можно не писать процедуру в основной. А при подходе Geo - пишется и там и там - зачем так делать? Про системный подход согласен, но Access изначально совсем не так работает как винды:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 09:27 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
В итоге сделал как подсказал Geo, т.к. необходимо еще учитывать дополнительные параметры поиска. mahoune ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 10:23 |
|
||
|
Как определить изменения в подчиненной форме?
|
|||
|---|---|---|---|
|
#18+
to Hummer Зачем???? Написал же - я изменяю Parent - и в ней же вижу подчинённую - там Case - по имени родителя (этого же) - правлю я его абсолютно так же, как правил бы и в родителе, а на все остальные родительские, где она используется мне пофиг - так как там ничего не поменялось:) Как зачем case для семи форм, а если еще и нехилая логика то и растут вот потом процедуры на 20 листов. Чего же в этом хорошего. Хорошо если с этой подчиненной формой работаешь только ты, а если несколько человек, то тут всплывает вероятность ошибки. Поди потом разбери кто-чего нарисовал. При том же растет и размер формы. Зачем мне объект в оперативной памяти в котором я использую 1/7 часть кода? Переносимость не страдает, уж поверьте, перенести могу одну главную и одну подчинённую и всё будет работать, так же как и в вашем случае Ага удаляешь весь case и пишешь все по новой какая тут переносимость? Ещё раз повторяю, весь код держится в подчинённой форме, потому что она грузится раньше Какая, в данном случае, разница когда она грузиться? Мне непонятно. А при подходе Geo - пишется и там и там - зачем так делать?[/src] Затем, что мне, как программисту, гораздо проще работать с событийной моделью, а не валить все в одну кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 13:59 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32239598&tid=1679845]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 402ms |

| 0 / 0 |
