Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Помогите с фокусами  [new]
madg
Member

Откуда:
Сообщений: 530
Гдето здесь случайно наткнулся на похожую тему, но где и как запамятовал.
Если кто знает, дайте ссылочку, плииз!
Ситуевина такая, привожу код закрытия справочника, после которого значение
из справочника переносится в поле Kategoria1 формы Reestr, с этим не сложно,
Private Sub btCloze_Click()
    On Error GoTo Street_Err
Me.Refresh
    Dim A1 As String
A1 = Me.id
DoCmd.Close
Forms![Reestr]![Kategoria1].Requery
Forms![Reestr]![Kategoria1] = A1
Forms![Reestr]![Kategoria1].SetFocus
    Exit Sub

Street_Err:
MsgBox "данные не введены"
DoCmd.Close
End Sub

А как данные внести не в Kategoria1 а в поле где находился фокус при вызове справочника.

Спасибо!
4 июн 04, 09:24    [721447]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
Boroda
Member

Откуда:
Сообщений: 88
примерно так:

Public Ctr As Control ' описываешь в каком нибудь модуле
'---------------
set Ctr =Screen.ActiveControl ' перед вызовом справочника:

' заменяешь свой код
with Ctr
.Requery
.value = A1
.SetFocus
end with
4 июн 04, 09:30    [721466]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
paparome
Member

Откуда: Москва
Сообщений: 4312
ИМХО

1. При вызове справочника надо запомнить контрол в котором находился фокус
(Справочник вызывается кнопкой, значит следует получить фокус контрола у которого был фокус до кнопки = Screen.PreviousControl в обработчике нажатия кнопки)
2. Не забывать проверять, что данный контрол является редактируемым, полем (а не, к примеру, другой кнопкой) и т.п.
4 июн 04, 09:32    [721472]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
madg
Member

Откуда:
Сообщений: 530
Коллективный разум сильная вещь!
Private Sub btCloze_Click()
    On Error GoTo Street_Err
Me.Refresh
    Dim A1 As String
A1 = Me.id
DoCmd.Close
With Ctr
.Requery
.Value = A1
.SetFocus
End With
Exit Sub

Street_Err:
MsgBox "Вы отказались от ввода данных"
DoCmd.Close
With Ctr
.Requery
.SetFocus
End With
End Sub

RE:paparome
> Не забывать проверять, что данный контрол является редактируемым, полем
Я и не знал, что такое вообще возможно!
И как.....?
4 июн 04, 10:20    [721604]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
Boroda
Member

Откуда:
Сообщений: 88
ctr.enabled= true
ctr.locked=false
4 июн 04, 11:35    [721948]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
madg
Member

Откуда:
Сообщений: 530
Сам от себя такого не ожидал!
Private Sub K66_Click()
On Error GoTo Data_Err
Set Ctr = Screen.PreviousControl
    If Ctr.Enabled = True Then
        If Ctr.Locked = False Then
Set Ctr = Screen.PreviousControl
Me.Refresh
DoCmd.OpenForm "Kategoria", acNormal, "", "", acAdd, acNormal
Dim ctlCurrentControl As Control
Dim strControlName As String
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.Name
Else
MsgBox "Не выбрано поле Категория"
GoTo Data_Err
End If
Else
MsgBox "Не выбрано поле Категория"
GoTo Data_Err
End If
Exit Sub
Data_Err:
    MsgBox "Ошибка ввода данных"
    Me.Kategoria1.SetFocus
End Sub

Может можно как нить проще?

PS
Всегда хочется что нибуть лучше!
4 июн 04, 12:10    [722090]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с фокусами  [new]
madg
Member

Откуда:
Сообщений: 530
Private Sub K66_Click()
On Error GoTo Data_Err
Set Ctr = Screen.PreviousControl
    If Ctr.Enabled = True Then
    If Ctr.Locked = False Then
Me.Refresh
DoCmd.OpenForm "Kategoria", acNormal, "", "", acAdd, acNormal
Dim ctlCurrentControl As Control
Dim strControlName As String
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.Name
End If
End If
Exit Sub
Data_Err:
    MsgBox "Ошибка ввода данных"
    Me.Kategoria1.SetFocus
End Sub

Если отключить обработчик ошибки, на оибочные значения перехода по IF нет,
выкидывает в дебуггер.
Ну не хочет, как хочет.
А жаль!
4 июн 04, 12:30    [722180]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить