|
|
|||||||||||||||||||||||||||||
|
Использование диалогового окна [Поиск и замена] без вкладки ЗаменаИсточник: Accessboom
При вызове диалогового окна [Поиск и замена] в нем по умолчанию появляются две вкладки: Поиск и Замена. Если Вы не хотите чтобы вкладка Замена появлялась, необходимо перед вызовом окна поиска запретить изменение записей в форме и тогда вкладка Замена не появляется. Из программного кода это легко можно сделать так: Me.Поле.SetFocus ' перенесем фокус ввода в искомое текстовое поле, ' нельзя фокус ввода оставлять на кнопке в любом случае И изменение записей в форме допускается и окно поиска отображается только с одной вкладкой [Поиск] - более простое и понятное для пользователей. Окно [Поиск и замена] является плавающим и тут проявляется интересный эффект: если пользователь, не закрывая окна поиска, перейдет к форме (неважно, что он там делать будет) и снова перейдет к диалоговому окну поиска, то в окне поиска автоматически появится вкладка Замена - ведь в данный момент записи на форме уже не являются запрещенными редактированием..... Я не пока не найду, как можно управлять из программного кода опциями окна [Поиск и замена]....Ну, совпадение настраивается в Параметрах->Правка и поиск...а остальные ? С помощью 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 ********* Ссылки по теме
|
|