powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / doCmd.OpenForm ,,,,acDialog
42 сообщений из 42, показаны все 2 страниц
doCmd.OpenForm ,,,,acDialog
    #32362414
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как определить в каком режиме запущена форма: acNormal или acDialog ?
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362452
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное
if me.Modal = true then
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362462
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я тоже так думал... не работает... даже проверял наличие me.maxbutton и тому подобное...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362474
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне просто интересно знать - зачем?:)
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362478
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно не работает. Можно тогда так:

on error resume next
Forms![Какая-то главная форма].SetFocus
if err.number <> 0 then ...
on error goto 0
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362481
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все очень просто... форма универсальна и вызывается во многих местах иногда и с дупликацией, но есть вызовы именно как диалоговое. Мне не хочется передавать еще один параметр режима, т.к. придется следить что бы все вызовы были идиентичны и не будет универсальности.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362488
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Geo
Это действительно хорошая идея
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362490
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 elephant_work
А я бы передавал в процедуру открытия этой формы (процедура должна быть наверное, раз из многих мест вызывается) Optional параметр (значение из глобальной переменной) - потом бы анализировал это значение. Единственный минус - возникнет ошибка и значение обнулится...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362494
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Hummer
спасибо... это не годиться... сильно много менять...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362497
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 elephant_work
Не много совершенно (может даже и меньше, чем у Гео - работать будет быстрее, чем проверка на ошибку при передачи фокуса форме - причем не абы какой, а которая должна быть загружена к тому же:) ), если есть процедура открытия этой формы - если таковой нет, то не годится конечно же:)
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362506
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Hummer
Как раз главная форма есть и всегда загруженна...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362573
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот прикол что при модальной форме команда Forms![другая форма].setFocus ошибки не дает... и проблема осталась
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362581
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Предлагаю идиотское решение. Величина

Me.WindowWidth - Me.InsideWidth

у меня получилась: если форма открыта как диалог, то 90, а иначе 180...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362588
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А мое решение не такое и идиотское. Даже если в настройках Виндов поиграть с толщиной рамки окна, то все равно первое остается всегда ровно 90, а второе 180 или больше.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362606
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, Geo, перед лицом своих товарищей торжественно клянусь...

Никогда не приводить примеров, которые перед этим не попробовал сам..

И не приводить примеров, которые сам не попробовал..

И вообще никого никуда не приводить.

А Хаммер предложил отличный вариант.

Вот.

А я пойду еще выпью.

Эх, дарроги...

---

Зы...

Я ж эта, пошутил же я. если я перестану писать непровереные мною вещи, то мне писать будет нечего же... :(

Эх, дарроги :))
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362612
2 Нammer
2 Geo

кривоватенько это - на ошибке проверять... Наш учитель Гетц - О-оччень конкретно прошелся по этой теме в одной из своих публикаций...

сожалею, но не вспомню сейчас источник...

я просто сделал себе наколку - "не забуду - это криво"
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362621
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кривоватенько это - на ошибке проверять...
Фуйню вы сказали, деликатно уважаемый кхе
В отлове ошибки нет ничего предрассудительного.
Классический случай - определить, содержит ли коллекция нужный элемент
Это так... не в тему, зато спьяну.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362713
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 кхе-кхе (деликатно)
Да.... А как же конструкция Try Catch - фактически отлов ошибки получается..... А цитатку бы привели:)
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362779
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Geo
я ничего не имею против твоего решения, но есть видимо отличие в наших проверках. Моя форма изначально не модальная и ее свойства Modal = false . и когда я ее открываю по команде DoCmd.OpenForm "frmCategories", , , , , acDialog то я с нее могу получить доступ к другим формам программно и без всяких ошибок и что самое интересное когда проходит команда Forms("MainPMC").SetFocus то в Screen.ActiveForm как раз находится форма MainPMC .
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362783
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно в форме завести скрытый контрол или публичную переменную которую назначать по событию загрузка.

при открытии формы в режиме диалога этого события не происходит и это свойство останется неинициализированным ))
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362801
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоже не подходит... все грузится и потом эта форма может быть загружена несколько раз как клон. соответственно публичная переменная не годится
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362816
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем я выкрутился другим способом. На моей форме нет рекодсета и поэтому свойство Me.AllowEdits осталось невостребованным. Если на форме оно true изначально тоо при открытии формы по DoCmd.OpenForm "frmCategories", , , , acFormReadOnly , acDialog это свойство меняет статус на false . минимальные изменения кода, но все равно мне не нравиться. :-(
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362825
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я говорил про публичную переменную уровня модуля формы
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362833
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 elephant_work
Через публичную переменную будет в самый раз - мне кажется, трудно придумать лучший способо, хотя варианты есть всегда:)
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362847
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело что на этотй форме есть такие переменные и все они работают нормально... нет неи одной что бы не определялась.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362855
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не путаешь событие open и load ?

открытие происходит всегда, загрузка в диалоге не происходит
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362863
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не обрабатываю событие Open . только Load возможно в adp это работает по другому? у меня adp проект
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362872
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКоткрытие происходит всегда, загрузка в диалоге не происходит
Это как это не происходит?
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362881
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лоханулся я, наоборот

Public isDialog As Boolean
Private Sub Form_Open(Cancel As Integer)
isDialog = False
End Sub
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362887
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять, так:


Public isNoDialog As Boolean
Private Sub Form_Open(Cancel As Integer)
isNoDialog = true
End Sub
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362891
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. по твоему Open в диалоге не происходит????
Моя твоя не понимай
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362895
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да на мой взгял, в обычном модуле делается паблик переменная типа булеан, её значенеи определит как загружена последняя форма (не важно, клон это или нет). В чём проблема-то?

Переделка кода по минимуму......
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362924
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, я требую продолжения банкета

АлексейК, может это в какой-нибудь чудо версии аксеса Open не происходит?
В 97-м и ХР происходят оба как ты форму не открывай. Да и с какой бы стати им не происходить?
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362928
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный

Access XP, ADP (Возможно и в других версиях)

при открытии диалога нет события open
поставь точку останова и посмотри
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362941
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У тебя версия видимо глючная... у меня все события работают как в 2000 так и в ХР...
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362948
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикол , где же истина...?!
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362952
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК

Аксес ХР, adp
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Form_Load()
    Debug.Print  "Load" 
End Sub

Private Sub Form_Open(Cancel As Integer)
    Debug.Print  "Open" 
End Sub


В окне отладки
Код: plaintext
1.
2.
docmd.OpenForm  "Форма1" ,,,,,acDialog 
Open
Load


Где-то что-то у тебя неправильно.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362953
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прикол ....
попробую на других компах
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32362972
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня все события отрабатывают нормально. Вне зависимости от того, как я открываю форму и что у неё в свойстве Modal прописано. Access XP (10.4302.4219) SP-2.
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32363018
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чегось сегодня я туплю, не бейте меня больно .... ))
не указал [Event Procedure] ...
видимо не дело в праздник работать ...


попробуйте так:

Public isNoDialog As Boolean

Public Sub tst()
DoCmd.OpenForm "Форма1", acNormal, , , , acDialog 'Без события активейт
'DoCmd.OpenForm "Форма1", acNormal'
End Sub

Private Sub Form_Activate()
isNoDialog = False
End Sub
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32363384
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Declare Function GetWindowLong Lib  "user32"  Alias  "GetWindowLongA"  _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

...

Dim hwnd As Long
Dim lngRes As Long
Const WS_EX_DLGMODALFRAME As Long =  1 
Const GWL_EXSTYLE As Long = - 20 
hwnd = Forms( "form1" ).hwnd
lngRes = GetWindowLong(hwnd, GWL_EXSTYLE)
Debug.Print  "Форма открыта как диалоговая: "  & CBool(lngRes And WS_EX_DLGMODALFRAME)


вернет True, если вызывать открытие формы с acDialog либо устанавив тип границы в ОкнаДиалога /docmd.OpenForm "form1",,,,,acDialog или BorderStyle=3 'Dialog
...
Рейтинг: 0 / 0
doCmd.OpenForm ,,,,acDialog
    #32363580
elephant_work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Senin Viktor

Спасибо огромное! Работает!!!!
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / doCmd.OpenForm ,,,,acDialog
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]