Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
24 / 23 / 0
Регистрация: 10.10.2014
Сообщений: 886
1

Запретить фокусу произвольно переходить на другие поля

18.09.2016, 07:18. Показов 1241. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
В приложении БД. Задумка в том, чтобы при получении полями "Текст 1" и "Текст 2" отображались для каждого из них свои столбцы "Запись 1" и "Запись 2".
Проблема в том, что при этом фокус на выбранное поле переходит только со второй попытки.
Возможно ли сделать, чтобы это происходило с первой попытки?
Вложения
Тип файла: rar Database.rar (18.5 Кб, 2 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2016, 07:18
Ответы с готовыми решениями:

Google chrom постоянно открывает произвольно другие сайты
В гугл хром постоянно открываються другие сайты, самопроизвольно, наподобие : фейсбук, казино...

Вывод инфы в зависимости от значения произвольно поля
Подскажите пожалуйста как ввести информацию в зависимости от значения произвольного поля. Например...

Как запретить перенаправление со своего сайта на другие домены?
Появилась проблема с партнерскими программами, их поубирал и всёравно перенаправляет и предлагает...

Как запретить к индексации в Яндексе ссылки на другие сайты
Хотелось бы индексировать страницу, но чтобы не учитывались ссылки на другие сайты с него, баннеры...

8
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.09.2016, 08:19 2
Лучший ответ Сообщение было отмечено GafarovIS как решение

Решение

Если правильно понял идею, то так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Текст_1_GotFocus()
    Screen.ActiveDatasheet.[Запись 1].ColumnHidden = False
    Screen.ActiveDatasheet.[Запись 2].ColumnHidden = True
End Sub
 
'Private Sub Текст_1_LostFocus()
'    Screen.ActiveDatasheet.[Запись 2].ColumnHidden = False
'End Sub
 
Private Sub Текст_2_GotFocus()
    Screen.ActiveDatasheet.[Запись 2].ColumnHidden = False
    Screen.ActiveDatasheet.[Запись 1].ColumnHidden = True
End Sub
 
'Private Sub Текст_2_LostFocus()
'    Screen.ActiveDatasheet.[Запись 2].ColumnHidden = True
'End Sub
Вложения
Тип файла: rar Database180916.rar (17.0 Кб, 0 просмотров)
1
24 / 23 / 0
Регистрация: 10.10.2014
Сообщений: 886
18.09.2016, 08:27  [ТС] 3
Вы все правильно поняли. Просто я не сказал Вам, что полей "Текст" и соответствующих им полей "Запись" гораздо больше, а не по два.
Поэтому, в одной процедуре не возможно будет угадать на каком поле в прошлый раз был фокус.
Вернее... Возможно, но это через переменную. Просто хотел узнать другого способа не бывает ли?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.09.2016, 09:31 4
Лучший ответ Сообщение было отмечено GafarovIS как решение

Решение

Пример для 4 полей. С регулярными именами: Запись 1, ..., Запись 4, Текст 1, ..., Текст 4 и полем Код. Если имена полей нерегулярны, то нужны массивы соответствия имен.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Код_GotFocus()
    CtlVisible
End Sub
 
Private Sub Текст_1_GotFocus()
    CtlVisible
End Sub
 
Private Sub Текст_2_GotFocus()
    CtlVisible
End Sub
 
Private Sub Текст_3_GotFocus()
    CtlVisible
End Sub
 
Private Sub Текст_4_GotFocus()
    CtlVisible
End Sub
 
Public Function CtlVisible()
    Dim prev, cur, ctlP, ctlC
    On Error Resume Next 'при загрузке контролы даташит еще не определены
    cur = Screen.ActiveControl.Name
    prev = Screen.PreviousControl.Name
    ctlP = Replace(prev, "Текст", "Запись")
    ctlC = Replace(cur, "Текст", "Запись")
    Screen.ActiveDatasheet.Controls(ctlC).ColumnHidden = False
    If prev <> "Код" Then Screen.ActiveDatasheet.Controls(ctlP).ColumnHidden = True
End Function
Вложения
Тип файла: rar Database180916_1.rar (19.3 Кб, 1 просмотров)
2
24 / 23 / 0
Регистрация: 10.10.2014
Сообщений: 886
18.09.2016, 10:05  [ТС] 5
спасибо.
а как теперь навести фокус на поле в таблице формы (ну чтобы оно выделялось так будто курсор встал не на основной форме, а в таблице???
0
8862 / 5910 / 585
Регистрация: 27.03.2013
Сообщений: 19,583
18.09.2016, 10:17 6
Может какое нибудь условное форматирование нужно применить?
Хотя в табличных формах такое кажисть не прокалывает.
1
24 / 23 / 0
Регистрация: 10.10.2014
Сообщений: 886
18.09.2016, 10:32  [ТС] 7
Цитата Сообщение от mobile Посмотреть сообщение
Dim prev, cur, ctlP, ctlC
А переменные можно сделать явными?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.09.2016, 12:14 8
Лучший ответ Сообщение было отмечено GafarovIS как решение

Решение

GafarovIS, попробуйте
Вложения
Тип файла: rar Database180916_1.rar (18.7 Кб, 3 просмотров)
1
24 / 23 / 0
Регистрация: 10.10.2014
Сообщений: 886
18.09.2016, 14:50  [ТС] 9
спасибо большое! очень сильно помогли
0
18.09.2016, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2016, 14:50
Помогаю со студенческими работами здесь

Cisco packet tracer: запретить доступ клиентов wi-fi в другие VLAN
Построил схемку, вланы,адреса, но вот проблема в том что один из вланов(wifi сеть) не хочет...

замена id на другие поля
Добрый день! Помогите пожалуйста. Имеется таблица: Create Table Book (ID_book int not null,...

Бьет ли произвольно установленный ферзь произвольно установленную фигуру?
Текст задачи &quot;Положение фигуры на шахматной доске(8х8) задаётся двумя числами - номером...

ListView. Вопрос по фокусу
Народ. У меня на форме есть компонент ListView. В нем, естественно, есть какие-то строки. Так вот,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru