CommandButton

Dmitriy Indychiy

Доброго ремени суток!Возникла задача в задании параметра некоторой кнопки, далее опишу пример:Допустим есть frm_Main, на ней присутствует кнопка cmd_Open, после ее нажатия открывается другая форма frm_Exemple, должно высветиться сообщение или изменяться Caption , мол вы зашли с формы frm_Main. А если я буду открывать frm_Exemple с другой формы, то и сообщение будет характерным.Суть в том, что форму frm_Exemple можно открыть с разных форм базы, мне хотелось бы отследить событие нажатия кнопки на факт Load() формы frm_Exemple
Private Sub Form_Load()
 Dim str_1, str_2 As String
 str_1 = "Вы вошли с главной формы"
 str_2 = "Вы вошли с другой формы"
 'If кнопка главной формы = OnClick then
 Form_frm_Orders.Caption = str_1
 'End if
 'If кнопка другой формы = OnClick then
 Form_frm_Orders.Caption = str_2
 'End if
End Sub
Буду рад советам в решении данной задачи. Заранее благодарен
21 ответ

Dmitriy Indychiy

Доброго ремени суток!...
спасибо!и вас по тому же месту!
Суть в том, что форму frm_Exemple можно открыть с разных форм базы, мне хотелось бы отследить событие нажатия кнопки на факт Load() формы frm_Exemple
если кнопка НЕ на вложенной форме, то этого по идеии - хватит
Screen.PreviousControl.Parent.Name


Dmitriy Indychiy

OpenArgs
& F1(Это означает: напишите в любом месте программы OpenArgs, поствте на ето слово курсор мыши и нажмите клавишу F1)


Dmitriy Indychiy

Dim str_1, str_2 As String
При таком обьявлении str_1 - Variant , а только str_2-String .Так и должно быть?


Dmitriy Indychiy

...& F1(Это означает: напишите в любом месте программы OpenArgs, поствте на ето слово курсор мыши и нажмите клавишу F1)
в ФАК!!!, не применно в ФАК !!!


Dmitriy Indychiy

Благодарю за ответы!
При таком обьявлении str_1 - Variant , а только str_2-String .Так и должно быть?
Почему Variant?
если кнопка НЕ на вложенной форме, то этого по идеии - хватит
да! кнопки находятся не на вложеных формах.А можно по подробней с Screen.PreviousControl.Parent.NameName - имя кнопки?!


Dmitriy Indychiy

Name - имя кнопки?!
Name имя формы на которой расположена кнопка


Dmitriy Indychiy

Name имя формы на которой расположена кнопка
спасибо за разъяснение!вот не работает(((
If Screen.PreviousControl.Parent.frm_Main Then
Form_frm_Orders.Caption = str_1
End If
пишет ошибку - "Невозможен переход к предыдущему элементу управления, если другие элементы не могут иметь фокус ввода"


Dmitriy Indychiy

спасибо за разъяснение!вот не работает(((
If Screen.PreviousControl.Parent.frm_Main Then
Form_frm_Orders.Caption = str_1
End If
пишет ошибку - "Невозможен переход к предыдущему элементу управления, если другие элементы не могут иметь фокус ввода"
нужен контекст - больше кусок кода, всю процедуру - ты чего то тут накосячилif screen.previouscontrol не надо писать это бр-р-ра лучше залезь в хелп по этим объектам и методам, посмотри экземплы


Dmitriy Indychiy

нужен контекст - больше кусок кода, всю процедуру - ты чего то тут накосячил
Private Sub Form_Load()
 Dim str_1, str_2 As String
 str_1 = "Вы вошли с главной формы"
 str_2 = "Вы вошли с другой формы"
 If Screen.PreviousControl.Parent.frm_Main Then 'тут выделяется при ошибке
 Form_frm_Orders.Caption = str_1
 'и тут еще будет DoCmd.GoToRecord , , acNewRec
 End If
 
End Sub


Dmitriy Indychiy

...вот не работает(((
If Screen.PreviousControl.Parent.frm_Main Then
Form_frm_Orders.Caption = str_1
End If
пишет ошибку - "Невозможен переход к предыдущему элементу управления, если другие элементы не могут иметь фокус ввода"
вы немного неправильно поняли смысл Nameидея должна быть примерно такая
If Screen.PreviousControl.Parent.Name = "frm_Main" Then
Form_frm_Orders.Caption = str_1
End If


Dmitriy Indychiy

If Screen.PreviousControl.Parent.frm_Main Then
If Screen.PreviousControl.Parent.Name = "frm_Main" Then
Form_frm_Orders.Caption = str_1
Forms!frm_Orders.Caption = str_1


Dmitriy Indychiy

Private Sub Form_Load()
 Dim str_1, str_2 As String
 str_1 = "Вы вошли с главной формы"
 str_2 = "Вы вошли с другой формы"
 If Screen.PreviousControl.Parent.frm_Main Then 'тут выделяется при ошибке
 Form_frm_Orders.Caption = str_1
 'и тут еще будет DoCmd.GoToRecord , , acNewRec
 End If
 
End Sub
Screen.PreviousControl.Parent.frm_Main это объект, его невозможно проверить на True/False. Проверять можно либо свойства объекта, либо свойства его контролов


Dmitriy Indychiy

Немножко опоздал...


Dmitriy Indychiy

[quot ё]идея должна быть примерно такая/quot]Все гуд!!! Работает! Спасибо за помощь!


Dmitriy Indychiy

Немножко опоздал...
А уж я как опоздал...


Dmitriy Indychiy

If Screen.PreviousControl.Parent.Name = "frm_Main" Then
Form_frm_Orders.Caption = str_1
End If
...эээ,это не очень хороший способ (точнее - очень нехороший - несмотря на то что он работает), способ обращения к формеесли вы не используете несколько экземпляров одной формы (если эта фраза вам не понятна - просто не обращайте на неё внимания),то правильно к форме обращатся так
Forms("frm_Orders")
или так
Forms!frm_Orders
зыпо поводу написанного серым - здесь


Dmitriy Indychiy

...Forms!frm_Orders.Caption = str_1
ну и я тоже - "небыстрый" ))))


Dmitriy Indychiy

Благодарю за ответы!Почему Variant?
Потому что это неявное обьявление переменных,правильно будет так :
Dim str_1 as String, str_2 As String


Dmitriy Indychiy

если вы не используете несколько экземпляров одной формы
именно формы все разные.ошибки кода(обращение к формам исправил)
'событие формы frm_Orders
Private Sub Form_Load()
 Dim str_1, str_2 As String
 str_1 = "Добовление заказа"
 str_2 = "Последний заказ"
 If Screen.PreviousControl.Parent.Name = "frm_Main" Then
 Forms!frm_Orders.Caption = str_1
 DoCmd.GoToRecord , , acNewRec
 Else
 If Screen.PreviousControl.Parent.Name = "frm_Test" Then
 Forms!frm_Orders.Caption = str_2
 DoCmd.GoToRecord , , acLast
 End If
 End If
End Sub
еще заметил, что если я открываю frm_Orders из frm_Test, то не сразу сробатывает условие, нужно закрыть форму заявок, а потом снова открыть.


Dmitriy Indychiy

именно формы все разные.ошибки кода(обращение к формам исправил)
'событие формы frm_Orders
Private Sub Form_Load()
 Dim str_1, str_2 As String
 str_1 = "Добовление заказа"
 str_2 = "Последний заказ"
 If Screen.PreviousControl.Parent.Name = "frm_Main" Then
 Forms!frm_Orders.Caption = str_1
 DoCmd.GoToRecord , , acNewRec
 Else
 If Screen.PreviousControl.Parent.Name = "frm_Test" Then
 Forms!frm_Orders.Caption = str_2
 DoCmd.GoToRecord , , acLast
 End If
 End If
End Sub
еще заметил, что если я открываю frm_Orders из frm_Test, то не сразу сробатывает условие, нужно закрыть форму заявок, а потом снова открыть.
...извините, Дмитрий ,мне не очень понятно что вы имеете в виду под "не сразу сробатывает условие" ...?но так , что б с лёту - подозреваю что это по-поводу "DoCmd.GoToRecord" - это тоже весчь из тех что использовать не стоит, - правильнее - было бы выполнять эти действия через рекордсет формы...поэтому лично я - не очень понимаю - "что должно проистекать"так что вы или - опишите - или - выложите пример базы с этим куском , и ожидаемыми к нему требованиями...


Dmitriy Indychiy

но так , что б с лёту - подозреваю что это по-поводу "DoCmd.GoToRecord" - это тоже весчь из тех что использовать не стоит, - правильнее - было бы выполнять эти действия через рекордсет формы...
Да, все верно с этой вещью был косяк, использовал рекордсет))) PSЕще раз спасибо за помощь!!!