powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно отловить переключение режима отображения формы таблица/простая форма?
53 сообщений из 53, показаны все 3 страниц
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368173
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...а то приходится подменять стандартные способы переключения своими. Что не очень удобственно.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368181
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В задокументированных событиях вроде бы такого нет. МОбыть есть недокументированные?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368202
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот методом "пожмакав" - нашел следующее -
OnCurrent отрабатвает на всякое переключение как его последний элемент -и, в свойстве формы CurrentView показывает текущий установленный режим.
Жмакал в OfficeXP
Удачи,
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368306
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Victosha
В принципе, проверка CurrentView на событии Current должна работать. Но только если есть хотя бы одна запись. Иначе Current не случится.

2 Гео
Понимаю, что вопрос запрещенный, но все-таки - зачем это понадобилось? Просто интересно.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368582
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[Лох Позорный ]
>В принципе, проверка CurrentView на событии Current должна работать. Но >только если есть хотя бы одна запись. Иначе Current не случится.

Жмакнеш F1 - получишь: The Current event occurs when the focus moves to a record, making it the current record, or when the form is refreshed or requeried

В данном случае - the form is refreshed or requeried - работает ВСЕГДА, независимо от "привязанности" формы к источнику. ПРОСТО ПОПРОБУЙ

Удачи, Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368590
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Victosha

Ну как может возникнуть Current, если нет записей?
Сами-то пробовали?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368608
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Serge Gavrilov ]

> Ну как может возникнуть Current, если нет записей?
>Сами-то пробовали?

A) Сами пробовали
Б) The Current event occurs when the focus moves to a record, making it the current record, or when the form is refreshed or requeried
В данном случае - the form is refreshed or requeried - работает ВСЕГДА, независимо от "привязанности" формы к источнику. ПРОСТО ПОПРОБУЙ

Удачи,
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368620
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно вам цитаты из хелпа приводят:)

Делаем форму без привязки к данным и пишем событие на текущую запись (просто голую форму) - при первой загрузке это событие сработает - вот такой вот хитрый аксес:) И при переводе формы в другие режимы тоже сработает.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368630
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нафига нам цитаты из хелпа (тем более два раза)
Запретить добавление - и нету никакого Current. Потому что и записи нет - никакой.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368638
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП - бурно отмечал???
Все работает. Форма без источника, все запрещено. При переключении вида ВСЕГДА происходит событие onCurrent
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368640
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
or when the form is refreshed or requeried.

Или думаешь, что форма не Refreshed при переключниии вида?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368648
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТемныйВсе работает. Форма без источника, все запрещено. При переключении вида ВСЕГДА происходит событие onCurrent

Форма с источником, записей нет, добавление запрещено.
Current не происходит, проверено msa 2002, mdb
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368649
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный
Я тож люблю водку пить - земля валяться, но иногда и проверить не мешает, о чём долдонят:) Аксес ХП, на нём всё и проверял:)
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368653
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Hummer

Я проверид, см мое сообщение выше
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368657
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Темный
Ты думаешь я читать не умею? Или у меня настолько плохое зрение, что только большой фонт способен разглядеть? А понять что написано - так только если пожирнее сделать?

Форма, привязанная к источнику данных, при отсутствии данных и запрещенном добавлении кладет на все возможные события Current. А уж ты решай сам - Refreshed у тебя или нет.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368660
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был неправ вот в чём, проверял без источника данных - беру свои слова назад, с источником при запрете на добавление не работает.
Просто думал, что с источником проверял - НГ ещё действует.

2 ЛП - пред. пост считать неверным, пойду выпью коньячку:)
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368666
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... Где-то на Лестнице я уже сокрушался по поводу тго, что я - ишак.
ЛП, мои изинения.

Пойду пить красное полусладкое.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368672
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(о пользе чисто...сердечных признаний)
Хаммер=Молоток=Молодец
Темный - ты не тот, за кого себя принимаешь (матан-то сдал небось)

2 Все
А может, если записей нет, то Гео пофиг, какой вью у формы? Какая разница в профиле яиц при их отсутствии? Пусть Гео рассудит.

/Поддерживая настроения масс/Пойду допью Кьянти - от корпоративной вечеринки остался
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368678
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Празднование НГ продолжается!
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368689
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе наверное нет разницы в профиле яиц если их нет (и быть не может)
Только эта.. Current - это конечно хорошо, да вот только случается он слишком часто (если вообще случается). И непонятно как отслеживать - произошел он естественным путем или же в результате переключения режимов.

Блин, я тоже хочу чего-нить посленовогоднего... коньячка бы... Так ведь нет, как дурак сижу на работе.

Вот Гео наверное пиво пьет. Или вотку. Или просто молчит как партизан, не говорит - зачем ему смену режимов ловить понадобилось.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368701
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гео спит, наверно... Или морду бьет постановщику ТЗ, что на лесенке лежит. :)

Ну я тоже на рабте. И еще магазин рядом. :)
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368731
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Serge Gavrilov ], [Лох Позорный]
Уели, - мол и к источнику привязан и записей в нем нет, так еще и добавление запрещено - НУ, НЕ РАБОТАЕТ current тогда - ПРОСТИТЕ ДЯДЕНЬКИ...
Я даже спрашивать не буду для кого такая комбинация...

Но таймер-то все равно работает...

Привет
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368743
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таймер работает
Только случается он еще чаще чем Current
И уж совсем никак не привязан к смене режимов.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368770
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Лох Позорный]
> Таймер работает
>Только случается он еще чаще чем Current
>И уж совсем никак не привязан к смене режимов

случается как закажешь, а что не привязан - так и хорошо, - на это пальчики есть. Главное случается РЕГУЛЯРНО.

Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368773
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что не привязан - так и хорошо, - на это пальчики есть
Прочитай наконец название топика
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368790
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Лох Позорный ]
Про пальчики и название топика

1. добавляешь в проект модуль класса, например clsFormMode следующего содержания:
-----------------
Option Explicit
Private currentMode As Long 'текущий режим
Private prevMode As Long 'предыдущий режим

Event ViewModeChanged(prevMode As Long, currentMode As Long)

Property Let setViewMode(tMode As Long)
If currentMode <> tMode Then
prevMode = currentMode
currentMode = tMode
'испускаем событие об изменении режима просмотра
RaiseEvent ViewModeChanged(prevMode, currentMode)
End If
End Property

Private Sub Class_Initialize()
currentMode = -1 ' тут по желанию - (-1) для желающих отловить загрузку
prevMode = -1
End Sub

-----------------

2. Далее в модуле любимой формы
2.а) объявляешь прерменную
Private WithEvents myModeRaiser As clsFormMode

2.б) оформляешь OnTimer:
Private Sub Form_Timer()
myModeRaiser.setViewMode = Me.CurrentView
End Sub

2.в) подписываешься на события любимого класса
Private Sub myModeRaiser_ViewModeChanged(prevMode As Long, currentMode As Long)
'ЭТО МЕСТО ОТЛОВА
'Тут любимые действия при смене режима
MsgBox "Было:" & CStr(prevMode) & " Стало:" & CStr(currentMode)
End Sub

2.с) Не забыть выставить частоту TimerInterval в любимое значение
------------------------------------------------------
3) Можно оправиться и покурить.

С Приветом,
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368816
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж делать модуль класса - то логично в нем и ловить событие Timer от формы. Это так, к слову о пальчиках.
И все равно получается не обработка переключения, а периодическая проверка текущего режима. Разница все-таки есть. Это к слову о названии топика.

З.Ы. В 97-м такая конструкция не заработает. Не умеет 97-й RaiseEvent делать.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368839
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППонимаю, что вопрос запрещенный, но все-таки - зачем это понадобилось? Просто интересно.

Дык, сделал как-то пользователям форму - в режиме формы вводятся данные, переключаемся в табличный вид, работает удобственный поиск, а-ля Alt-буква в нортоне, только без Alt.

Им это зело понравилось, поэтому сейчас приходится так делать все новые формы. Причем в табличном виде добавление/изменение запрещено. Не помню почему, возможно, именно по названной Сергеем Гавриловым причине, но пришлось идти по пути написания специальных кнопок панелей и пунктов меню. А это неудобно.

2 Victosha
ОнКуррент - хорошо, но не всегда работает. Таймер - неплохо, но прежде, чем он заметит переключение режима, пользователь может успеть на что-то нажать, и изменения записи либо не произойдут, когда нужно, либо наоборот. Модуль класса - на этапе разработки, во всяком случае, очень плохо. Любая неотловленная ошибка - он от формы "отваливается", а иногда после нескольких раз глючит сам акцесс...
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368841
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Лох Позорный ]

Да, в 97м ЭТО (RaiseEvent) не сработает.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368846
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo, и часто у тебя бывает подобное сочетание параметров?
Пустой источник данных + запрет на добавление?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368849
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Темный
Запрет на удаление/изменение - при каждом запуске формы, и при переходе в табличный режим.
Формы без записей тоже бывают. Люди ж еще фильтрами пользуются...
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368864
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удаление, изменение и все? Или все-таки еще и добавление?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368894
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Гео
А не проще ли тебе сделать две независимые (под)формы? Одна для ввода данных, в режиме обычной формы, другая (табличная) для просмотра уже введенных с пушистым поиском будет болтаться в примечании.
Имхо конечно.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368898
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Geo]
В обчем, на сабклассинг потихонечку...

[тут почикано....]
>Таймер - неплохо, но прежде, чем он заметит переключение режима,
> пользователь может успеть на что-то нажать, и изменения записи либо не
> произойдут, когда нужно, либо наоборот.

Это от частоты зависит

> Модуль класса - на этапе разработки, во всяком случае, очень плохо.
> Любая неотловленная ошибка - он от формы "отваливается", а иногда после > нескольких раз глючит сам акцесс

Ошибки - отдельно, глючит - отдельно...

Ну да - в тех трех притопах, что я изобрАзить пытался не хватает инициализации и освобождения...

Из заявленных требований следует примерно вот что -
A) либо городить огород с состояниями формы (через клиентский класс) городить - это пробовать надо и вряд ли читаемо в итоге будет. Типа нет записей - включаем таймер, обнаружились - отключаем и ждем Текущую...

Б) Создать и подвязать к форме самодельное popup - меню c нужными кнопками,
если недостаточно, то еще и обычное меню,
обвязать все это классом а-ля см ранее, с нужным к-вом
Private WithEvents tControl as Office.CommandButton ... etc
После чего ловить Click от tControl и распоряжаться им по своему усмотрению



Может кто чего лучше предложит?

С уважением ко Всем,
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32368904
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня классное предложение!
Забить и оставить как есть!
Кому это неудобно? Пользователям? А что лучше: жмакнуть на кнопочку с выпадающим списком или жмакнуть на отдельную кнопку, которая включит нужный режим? Вопрос риторический...
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370106
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема, как будто, закрыта, потому заранее извиняюсь сразу перед всеми.
Из того класса (выше по флейму) , пока получилась вот такая штука:

Модуль класса (clsFormMode)
Option Compare Database
Option Explicit

Private Const CSEP As String = "[Event Procedure]"
Private Const CDEFTIMERINT As Long = 300 '

Private currentMode As Long '
Private prevMode As Long '

Private WithEvents tForm As Form ' форма, за которой следим

Private sourceTimerInt As Long ' исходный интервал таймера в форме


Event ViewModeChanged(prevMode As Long, currentMode As Long)

Sub Init(uForm As Form)
On Error Resume Next
Set tForm = uForm
With tForm
'Подписка на события формы
sourceTimerInt = .TimerInterval .OnCurrent = CSEP
.OnApplyFilter = CSEP

'считываем стартовый режим
setViewMode = .CurrentView '
End With
SetTimer 'Просто установим таймер - ,ближайший Current его выключит
End Sub

Private Sub SetTimer()
' включает "свой" таймер
On Error Resume Next
If sourceTimerInt = 0 Or sourceTimerInt > CDEFTIMERINT Then
tForm.TimerInterval = CDEFTIMERINT
End If
tForm.OnTimer = CSEP
End Sub

Private Sub ClearTimer()
'Отписываемся от таймера
On Error Resume Next
With tForm
.OnTimer = vbNullString
.TimerInterval = sourceTimerInt '
End With
End Sub

Private Property Let setViewMode(tMode As Long)
'
If currentMode <> tMode Then
prevMode = currentMode
currentMode = tMode
RaiseEvent ViewModeChanged(prevMode, currentMode)
End If
End Property

Private Sub Class_Initialize()
currentMode = -1
prevMode = -1
End Sub

Private Sub Class_Terminate()
Call Terminate
End Sub

Private Sub tForm_ApplyFilter(Cancel As Integer, ApplyType As Integer)
'события происходит до фактической смены источника,
' не знаем, будут ли записи - включаем таймер
SetTimer
End Sub

Private Sub tForm_Current()
'если сюда попали - таймер точно не нужен
ClearTimer
setViewMode = tForm.CurrentView
End Sub

Private Sub tForm_Timer()
' здесь оказываемся только при пустом источнике
setViewMode = tForm.CurrentView
End Sub

Private Sub Terminate()
'финальная очистка
ClearTimer
Set tForm = Nothing
End Sub
'--------------------------------------------------
Далее в форме:
Private WithEvents oV As clsFormMode

Private Sub Form_Close()
Set oV = Nothing
End Sub

Private Sub Form_Load()
Set oV = New clsFormMode
oV.Init Me
End Sub

Private Sub oV_ViewModeChanged(prevMode As Long, currentMode As Long)
MsgBox "Было: " & CStr(prevMode) & " Стало:" & CStr(currentMode)
End Sub
'------------------------------------------
Плюсы - работает, и выглядит не настолько уродливо, как мне поначалу казалось.
Минусы - переопределяет таймер, тем самым создает проблему протокола его совместного использования, если форма (или другой управляющий ею класс ) сама подписана на таймер. Например, если форма "по таймеру" желает посылать почтовый привет администратору, - может получиться не здорово сразу для всех.

Виктоша.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370556
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, но почему "Минусы - переопределяет таймер"?
Если форма сама обрабатывает это событие - то сначала вызовется обработчик твоего класса, потом обработчик формы.
Проверять лениво, но вроде должно быть так.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370693
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Лох Позорный]

>Если форма сама обрабатывает это событие - то сначала вызовется
>обработчик твоего класса, потом обработчик формы.
>Проверять лениво, но вроде должно быть так.

Так и будет.
В этом и проблема.
В общем случае это не только проблема таймера, но с ним она "яснее".
Таймер выделяется среди прочих событий своей "чужеродностью". По отношению к прочим событиям слушатели пассивны. От них (Слушателей) не зависит - произойдут ожидаемые события или нет. По отношению к таким событиям слушатели изначально равноправны и должны делиться чем и как умеют.

Таймер - по существу ресурс (в данном случае совместно используемый). По отношению к таймеру - МОЖНО ЗАДАВАТЬ ТЕМП. Это значит, что он МОЖЕТ нести в себе ЗАДАЧНЫЕ активности типа "Прочитать" файлик с ftp, опубликовать что-либо в web, статус формы почитать и т.д. - Всякие РЕГЛАМЕНТНЫЕ действия навесить, происходящие по расписанию. Алгоритмические активности, если есть такое слово.
Но, поскольку, физически в каждый данный момент ОН (таймер) один (если не лезть в WIN API), то возникает тема ПРОТОКОЛА СОВМЕСТНОГО ИСПОЛЬЗОВАНИЯ ОБЩЕГО ресурса. В принципе "пару строчек" поменять в том коде, НО. Тогда возникает Таймер С Договором О Правилах Его Использования.
По причине потенциального наличия множества РЕГЛАМЕНТОВ, требующих
СВОЕГО темпа течения времени.

Пока шибко некогда, но, кажется, что к кнопкам привязаться и правильнее и красившЕЕ во ВСЕХ отношениях. Может выберу ...

Виктоша

ЗЫ
Пардону за многословие...
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370725
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Victosha
>физически в каждый данный момент ОН (таймер) один (если не лезть в WIN API),

а хоть и лезть в Win API - все-равно будет 1 таймер на 1 hwnd. Но это так - к слову.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370750
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забираю свои слова назад :(
Код: plaintext
1.
2.
3.
4.
5.
Specifies a nonzero timer identifier. If the hWnd parameter is NULL, this 
parameter is ignored. If the hWnd parameter is not NULL and the window specified 
by hWnd already has a timer with the value nIDEvent, then the existing timer is 
replaced by the new timer. When SetTimer replaces a timer, the timer is reset. 
Therefore, a message will be sent after the current time-out value elapses, but 
the previously set time-out value is ignored. 
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32370772
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Senin Viktor]

Вообще-то это уже чуть другая тема, да и в таймерах я не силен. Но.
Не вполне я уверен в правоте собственных утверждений вообще, даже по отношению к Access, поскольку все это умственно. А про таймеры в частности - я имел в виду NT-евые waitable timers. Сходу не видно, почему их не может быть больше одного.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372399
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть это еще кому-то интересно...

1) Ставим ссылку на библиотеку Office

2) Создаем форму
Модуль класса формы:
Option Compare Database
Option Explicit

'кнопка перейти к виду формы
Private WithEvents toFormVBtn As Office.CommandBarButton
'кнопка перйти к виду таблицы
Private WithEvents toTblVBtn As Office.CommandBarButton


Private Sub findButtons()
'процедура привязки к стандартым кнопкам смена вида формы
'идентификаторы взяты для officeXP
'для 2000 идентификаторы не проверял
Set toFormVBtn = CommandBars.FindControl(Id:=502)
Set toTblVBtn = CommandBars.FindControl(Id:=498)
End Sub

Private Sub ClearButtons()
'отвязка от кнопок
Set toFormVBtn = Nothing
Set toTblVBtn = Nothing
End Sub

Private Sub Form_Close()
'при закрытии формы отвяжем кнопки
Call ClearButtons
End Sub

Private Sub Form_Load()
'при загрузке формы подвяжем кнопки.
Call findButtons
End Sub

Private Sub toFormVBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
'Собственно перехват нажатия кнопки прехода к виду формы
MsgBox "Нажата кнопка - Прейти к виду формы"
End Sub

Private Sub toTblVBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
'аналогично для кгопки "перейти к табличному виду"
MsgBox "Нажата кнопка - перейти к виду таблицы"
End Sub

3) Вот, собственно, и все.
-------------------------------------------------
Обсуждение
А) Мне это нравится гораздо больше чем все предыдущее.

Б) Полной уверенности в надежности все-таки нет. См. замечания Geo по поводу "отваливающихся" переменных класса. В моей практике наблюдалась специфическая подкрутка этой проблемы, связанная с потерей указателей на свойства и методы OLE-объекта при подъеме приложения из свопа.
Будут ли замечания или комментиарии?

С Уважением,

Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372405
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто!

Замечание - таким образом не определить, в каком режиме форма была изначально открыта. Конечно же это лечится проверкой режима собственно при открытии.
Также не отследить программную смену режима, придется не забывать при каждой такой программной смене выполнять нужные действия.

Жалко, что нет у формы соответствующего события. Было б событие - не было б этих геморроев.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372425
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это далеко не "универсальный" сбособ, т.к. переключение режима может производиться
- через меню;
- через специальные кнопки в "своих" панелях инструментов;
- кнопками на форме;
- макросами autokeys
или др.

В общем-то мысль интересная, но, коль скоро задача простыми и качественными способами не решается, не забивай голову, я ее с другой стороны обойду.

Сейчас я пользуюсь

private sub form_dirty(...)
if me.currentview<>1 then
...

Не очень удобно, с одной стороны. С другой - в некоторых формах хочется по изменению режима отображения что-то делать с полями (например, менять источник данных (controlsource)), но бог с ним, буду дальше ручками для каждой такой формы рисовать панели.

Спасибо большое.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372432
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To [Лох Позорный], [Geo] Ok
Спасибо, Пардону за назойливость... -)
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372442
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Гео
Это далеко не "универсальный" сбособ...
Разумеется. "Универсальный" способ - это событие у формы. Все остальное - от лукавого. Если события нет - то его нет, как ни крути.

переключение режима может производиться
- через меню;
- через специальные кнопки в "своих" панелях инструментов;
- кнопками на форме;
- макросами autokeys
Через меню, контестные меню и стандартные кнопки в тулбарах - решение Виктоши. В общем-то единственная проблема была - отловить именно эти, неотлавливаемые по другому события. А свои кнопки, макросы, и прочее программистское словоблудие - в программистском словоблудии и выполняй всю работу. Это требует написания всего одной функции по переключению режимов.
но лучше бы было событие

2 Виктоша
Еще раз сенькс. В смысле - круто. Приятное решение.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32372443
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поначалу на замечания возникла такая реакция - скомбинировать 1) и 2)

Однако ( почесав в затылке) предложение 2) (с подвязанными кнопками) (почти) снимается (то есть совсем сырец...). Хотя мне оно определенно нравится возможностью отменить нажатие кнопки, что вносит доп. уровень управления.
Доп. причина для снятия - возможно, кнопок должно быть больше - надо на контекстных меню еще поискать по вложенным формам...

предложение с тем, что было названо clsFormMode во первых, покрывает заказанные потребности не требуя динамических связей с доп. библиотеками, и, в этом смысле, оно "круче". И, хотя подвязка к таймеру, на мой взгляд, не вполне эстетична, все-таки приемлема, с учетом вариантов обхода проблем (если они - проблемы - есть в конкретном случае).
Про обходы - второй вариант - б) слушать таймер ДРУГОЙ формы - это совсем просто.


Рассказ о том, что что-то в Dirty проверяется значит только одно - реальные потребности существенно уже "спектра возможностей". Это больше похоже не на отлов переключений, а косвенное выполнение действий скрытых в режиме таблицы кнопок.

Для меня любобытно вот что - я не первый день, как будто, в клавиши тюкаю, а вот не возникало у меня потребности - видимо, в консерватории что-то править надо.
Для начала научиться морды в топики вставлять. -)
С Уважением,
Виктоша
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32579457
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у меня та же проблемма. Нужно отловить переключение, но не знаю как. Потому что был у меня такой случай: пользователь нечаяно нажал Ctrl + > и форма вышла из текущего режима. Это всё! Конец работе! А что делать? Поискал на форуме решение, вроде не нашел. Вот решил возобновить чужой вопрос, может за пол-года какое-нибудь решение нашлось все-таки?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32579475
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пользователь нечаяно нажал Ctrl + > и форма вышла из текущего режима. Это всё! Конец работе!
Мизантропичные варианты:
Оторвать программисту руки - за то, что не запретил переход формы в другие режимы

Оторвать пользователю руки и пришить вместо них ноги - чтоб не кликал куда не попадя

Чуть менее мизантропичный вариант:

Оствить пользователю руки и ноги, но выломать из клавиатуры Ctrl

----------------------------------------------------------------------------------------
Поискал на форуме решение, вроде не нашел
Кто здесь?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32579505
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что ежели сделать две одинаковые формы
одна для режима формы, другая - для таблицы.
переключать формы - юзер не поймет.
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32579590
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как запретить переход в режим конструктора (не создавая файл mde)?
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32579603
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь только мизантропические варианты сработают
...
Рейтинг: 0 / 0
Можно отловить переключение режима отображения формы таблица/простая форма?
    #32591928
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настолько, насколько последний вопрос про Ctrl-> - ответ будет таков:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     If Shift =  2  Then
       If KeyCode =  190  Then
         KeyCode =  0 
         Shift =  0 
       End If
     End If
  End Sub
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно отловить переключение режима отображения формы таблица/простая форма?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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