Использование диалогового окна [Поиск и замена] без вкладки Замена

При вызове диалогового окна [Поиск и замена] в нем по умолчанию появляются две вкладки: Поиск и Замена. Если Вы не хотите чтобы вкладка Замена появлялась, необходимо перед вызовом окна поиска запретить изменение записей в форме и тогда вкладка Замена не появляется. 

Из программного кода это легко можно сделать так:

Me.Поле.SetFocus         ' перенесем фокус ввода в искомое текстовое поле, 

                           ' нельзя фокус ввода оставлять на кнопке в любом случае
Me.AllowEdits = False    ' запретим изменение записей
RunCommand acCmdFind     ' вызываем диалоговое окно Поиск и Замена
Me.AllowEdits = True     ' сразу же разрешаем изменение записей
 

И изменение записей в форме допускается и окно поиска отображается только с одной вкладкой [Поиск] - более простое и понятное для пользователей.

Окно [Поиск и замена] является плавающим и тут проявляется интересный эффект: если пользователь, не закрывая окна поиска, перейдет к форме (неважно, что он там делать будет) и снова перейдет к диалоговому окну поиска, то в окне поиска автоматически появится вкладка Замена - ведь в данный момент записи на форме уже не являются запрещенными редактированием.....

Я не пока не найду, как можно управлять из программного кода опциями окна [Поиск и замена]....Ну, совпадение настраивается в Параметрах->Правка и поиск...а остальные ? С помощью SendKeys ? Возникает проблема с раскладкой клавиатуры, да и не красиво это...API ? тоже весьма нетривиально...

По моему, наиболее оптимальный способ - создать свою форму для поиска. Функциональность своей формы поиска можно задать любой, а также настроить по своему вкусу внешний вид.

Вот решение, предложенное Dev Ashish - но, по сути, ничего нового оно не вносит.

Access 2000 не дает возможности настраивать вид диалогового окна [Поиск и замена] . Однако, если вы установите свойство таблицы "только для чтения" перед вызовом этого диалогового окна, Access автоматически скроет вкладку Заменить, потому, что пользователь не может вносить изменения в режиме "только для чтения".

Следующие процедуры показывают, как открывать форму и таблицу в режиме "только для чтения" и вызывать диалоговое окно [Поиск и замена]:

' ***** Code Start *********

' This code was originally written by Dev Ashish.

' It is not to be altered or distributed,

' except as part of an application.

' You are free to use it in any application,

' provided the copyright notice is left unchanged.

' Code Courtesy of

' Dev Ashish

Sub sFindReplaceInForm(strFormName As String)

On Error GoTo ErrHandler

Const ERR_GENERIC = vbObjectError + 6666

' Open the form

DoCmd.OpenForm strFormName, acNormal

' now set it to ReadOnly

' The readonly mode will prevent the Replace

' dialog from showing up in the tab

With Forms(strFormName)

    .AllowAdditions = False

    .AllowDeletions = False

    .AllowEdits = False

End With

' select the Form in the UI

DoCmd.SelectObject acForm, strFormName, False

' Display the Find/Replace dialog

DoCmd.RunCommand acCmdFind

ExitHere:

    Exit Sub

ErrHandler:

    Resume ExitHere

End Sub

Sub sFindReplaceInTable(strTableName As String)

On Error GoTo ErrHandler

Const ERR_GENERIC = vbObjectError + 6666

' Open the Table

' The readonly mode will prevent the Replace

' dialog from showing up in the tab

DoCmd.OpenTable strTableName, acViewNormal, acReadOnly

' select the table in the UI

DoCmd.SelectObject acTable, strTableName, False

' Display the Find/Replace dialog

DoCmd.RunCommand acCmdFind

ExitHere:

    Exit Sub

ErrHandler:

    Resume ExitHere

End Sub

' ******** Code End *********


Страница сайта http://interface.ru
Оригинал находится по адресу http://interface.ru/home.asp?artId=7334