powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как обратится к свойству контрола зная его имя ?
7 сообщений из 7, страница 1 из 1
Как обратится к свойству контрола зная его имя ?
    #36427610
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ППЦ засыпался на такой ерунде. Перешел с Access на VB 6
MSDN - нету.

Как правильно написать следующую структуру:

Forms(FrmName).Controls(GridDSource).Recordset.Filter = "[" & GridColDFild & "]=" & "'" & GridValue & "'"
- в Access работает

FrmName, GridDSource, GridColDFild , GridValue - переменные типа String

FrmName=”Form1”
GridDSource=”ADODC1”
GridColDFild =”Имя”
GridValue=”Вася”

Спасибо
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36427872
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forms не принимает текст в качестве индекса.
Тут архитектуру надо подправить.

Вам приниципиально надо обращаться к форме по имени в переменной?

Если да, тут либо перебирать коллекцию Forms по индексам и смотреть свойство Name (и не забывать, что форм с одинаковым именем может быть запущено несколько), либо программировать при вызове форм переменную/массив/коллекцию...

В общем, для начала опишите контекст, который требует обращения к форме через переменную.
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36427991
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
В общем, для начала опишите контекст, который требует обращения к форме через переменную.
Мда как все сложно в VB по сравнению с VBA
Ситуация следующая:
Создал форму которая является типа универсальным контекстным меню для гридов (пункты меню: сортировка, фильтр по выделенному, фильтр для и т.д).
Когда её вызывают (меню) в свойство этой формы таг передаются следующие значения:
имя формы откуда вызвали,
имя источника данных грида,
имя источника данных ячейки,
значения самой ячейки грида откуда вызвали
а дальше хотел одной строчкой записывать действия для выбранного пункта меню:

Если юзер выбрал допустим фильтр по выделенному то думал что такая структура прокатит:
Forms(FrmName).Controls(GridDSource).Recordset.Filter = "[" & GridColDFild & "]=" & "'" & GridValue & "'"

Ну если писать корректно то код выглядит так:

Private Sub Label3_Click()
Call SelectParam ‘с помощью Split разбирает Tag и сохраняет параметры в переменные уровня формы.

If Form1.Adodc1.Recordset.Filter = 0 Then
If GridValue = "" Then
Form1.Adodc1.Recordset.Filter = "[" & GridColDFild & "]=Null"
Else
Form1.Adodc1.Recordset.Filter = "[" & GridColDFild & "]=" & "'" & GridValue & "'"
End If
Else
If GridValue = "" Then
Form1.Adodc1.Recordset.Filter = Form1.Adodc1.Recordset.Filter & " AND [" & GridColDFild & "]=Null"
Else
Form1.Adodc1.Recordset.Filter = Form1.Adodc1.Recordset.Filter & " AND [" & GridColDFild & "]=" & "'" & GridValue & "'"
End If
End If
Unload Me
End Sub

Проблема в том что имя формы может быть любым так же как и имя Adodc
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36428012
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaМда как все сложно в VB по сравнению с VBA
....
Когда её вызывают (меню) в свойство этой формы таг передаются следующие значения:
имя формы откуда вызвали,
имя источника данных грида,
имя источника данных ячейки

Это не в VB сложно, это у вас проблема в архитектуре, как я и предполагал. У вам привычка работать с именами, а надо работать с объектами.
Во-первых, форм с одинаковым именем (класса) типа Form1 может быть запущено несколько экземпляров, и передача имени проблему не решает.
Во-вторых вам нет никакой необходимости передавать в форму меню имя формы и имя контрола вообще. Надо просто отдавать ссылку на ADODC1:

1) Объявляете в форме меню публичную переменную типа ADODC
Public ExtADODC As Adodc

2) При вызове из основной формы отдаете ссылку в вызываемую форму (вместо программирования тага)
Set MenuForm.ExtADODC = Me.ADODC1

3) В форме меню обращаетеся к АДО-контролу через переменную ExtADODC
ExtADODC.Recordset.Filter = блаблабла
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36428332
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro большое спасибо!
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36428591
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если врубились - вам и параметры ячеек необязательно передавать через Tag, просто заведите соответствующие переменные и программируйте их - тогда не понадобится разбирать все Split-ом, да и типы передаваемых данных не будут ограничиваться типом String
...
Рейтинг: 0 / 0
Как обратится к свойству контрола зная его имя ?
    #36428613
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕсли врубились - вам и параметры ячеек необязательно передавать через Tag, просто заведите соответствующие переменные и программируйте их - тогда не понадобится разбирать все Split-ом, да и типы передаваемых данных не будут ограничиваться типом String
Да врубился и с тагом уже сам догадался :)
Беру свои слова назад в VB проще, чем в VBA
еще раз спасибо, что поставили на путь истинный
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как обратится к свойству контрола зная его имя ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]