|
|
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Кто нибудь пробывал делать по НАСТОЯЩЕМУ многооконный интерфейс в Access? чтобы можно было держать на экране сразу несколько одинаковых(но разных по данным) цепочек форм. Т.е. отказатся от сервиса DoCmd и сделать свой. с какими проблеммами сталкивались на этом пути? Вот ,например,когда когда я уничтожаю экземпляр формы убивая ссылку на нее (Set frm = Nothing) переменные объявленные в модуле формы обнуляются, и при отработке события Form_Unload инициированного этим убиванием ссылки они равны 0,а если сделать в этом событии Cancel =True, то форма не закроется , а ссылка уже Nothing , как же ее после этого уничтожить програмно? Что происходит внутри метода DoCmd.Close acForm , ведь он закрывает форму корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 11:02 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Если вопрос по реализации нескольких экземпляров формы. Работающий пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. где Form_FrmSpravConsultantPct - ваша форма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 11:10 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Вопрос по реализации методов DoCmd применительно к открытым таким образом формам после отработки acbRemoveForm Удаляется ссылка и инициируеся закрытие формы Но >переменные объявленные в модуле формы обнуляются, >и при отработке события Form_Unload >инициированного этим убиванием ссылки >они равны 0,а если сделать в этом событии Cancel =True, >то форма не закроется , а ссылка уже Nothing , >как же ее после этого уничтожить програмно? >Что происходит внутри метода DoCmd.Close acForm , >ведь он закрывает форму корректно? При закрытии обычной формы методом DoCmd.Close acForm переменные объявленные в модуле формы сохраняют свои значения во время отработки событий закрытия, а во время закрытия экземпляра формы через удаление ссылки на нее обнуляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 12:41 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
2Хам трамвайный Гец по этому случаю делает форму активной и закрывает ее DoCmd.Close Но получается , что для этого надо сделать форму видимой, а это не всегда удобно. Вот и хочется узнать как DoCmd.Close работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 12:54 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
> Но получается , что для этого надо сделать форму видимой, а это не всегда удобно. А так? on error resume next docmd.echo false frm.visible = true frm.setfocus docmd.close if err.number = 0 then set frm=nothing else frm.visible = false docmd.echo true on error goto 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 12:57 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Уточню вопрос. Как инициировать закрытие формы, не удаляя ссылки на нее , и не пользуясь DoCmd.Close ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 13:01 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
/topic/47734\r \r Может, найдешь что-то интересное.\r \r PS. Я так и не знаю, как и почему работает form_1.visible = true.\r \r PPS. А может быть, в твоем случае лучше будет сделат "мюнхаузенские" экземпляры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 13:05 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
>лучше будет сделат "мюнхаузенские" экземпляры Как раз с ним у меня проблеммы. Форма асинхронно выполняет процедуру имея ссылку на себя в себе. Форма не видима. После завершения процедуры форма должна закрытся. Как инициировать ее закрытие ? Уничтожаю ссылку - слетают переменные. DoCmd.Close - но я не хочу делать форму видимой. Судя по всему придется извращатся типа Application.Echo False frm.visible=true frm.SetFocus DoCmd.Close Application.Echo true А всего то надо DoCmd.Close но с возможностью передать ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 13:21 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
2 Latuk чтобы закрыть, форму используй: Код: plaintext а для того чтобы не оставылись "подвисшие" ссылки на форму, обрабатывай событие OnClose (WithEvents). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 14:21 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
2Shkurenko Alexander Вроде то что надо. Это кажется API функция. Покажи пожалуйста ее объявление в VBA типа Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long ато вдумыватся неахота :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 15:39 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 15:47 |
|
||
|
Многооконный интерфейс
|
|||
|---|---|---|---|
|
#18+
Спасибо все получилось. PS На всякий случай WM_CLOSE = &H10 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2004, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1695&tid=1677195]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 340ms |

| 0 / 0 |
