powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно узнать список объектов на форме?
10 сообщений из 10, страница 1 из 1
Как программно узнать список объектов на форме?
    #39673491
_Sergio2005_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Как программно узнать список объектов на форме?
И как узнать что это за объект (поле, поле со списком, список и т.д)?
Спасибо.
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673494
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Sergio2005_список объектов на форме Controls F1
_Sergio2005_как узнать что это за объект ControlType F1 (Enum AcControlType)
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673538
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Sergio2005_,

я вывожу в текстовик в таком виде(тип контрола, имя контрола, данные)
Код: vbnet
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.
31.
32.
frm00_Projects              ==================
tblProjectStage
 100          ProjectMainID_Надпись       Шифр проекта
 100          ProjectName_Надпись         Наименование
 100          ProjectShortName_Надпись    Краткое наименование
 100          ProjectCustomerID_Надпись   Шифр Заказчика
 100          ProjectCustomer_Надпись     Заказчик
 100          GIP_Надпись   ГИП
 100          ProjectYear_Надпись         Дата занесения
 100          Comment_Надпись             Comment
 100          Stage_OTR_Надпись           ОТР
 100          Stage_P_Надпись             П
 100          Stage_R_Надпись             Р
 100          IsCapitalObj_Надпись        IsCapitalObj
 100          IsLinearCapitalObj_Надпись  IsLinearCapitalObj
 100          Надпись26     Список проектов
 109          ProjectMainID ProjectMainID
 109          ProjectName   ProjectName
 109          ProjectShortName            ProjectShortName
 109          ProjectCustomerID           ProjectCustomerID
 109          ProjectCustomer             ProjectCustomer
 109          ProjectYear   ProjectYear
 109          Comment       Comment
 106          Stage_OTR     ====
 106          Stage_P       ====
 106          Stage_R       ====
 109          IsCapitalObj  IsCapitalObj
 109          IsLinearCapitalObj          IsLinearCapitalObj
 102          Линия28       ====
 111          ПолеСоСписком31             GIP///SELECT Сотрудники.id_w, Сотрудники.WorkerFamily FROM Сотрудники WHERE (((Сотрудники.WorkerPosition)="ГИП")); 
 104          Кнопка29      Редактировать проект
 104          Кнопка30      Создать проект
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673547
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Sergio2005_,

или в таблицу
имя формы: frm00_Projectsисточник данных:tblProjectStage

типимяданные 100ProjectMainID_Надпись Шифр проекта 100ProjectName_Надпись Наименование 100ProjectShortName_Надпись Краткое наименование 100ProjectCustomerID_Надпись Шифр Заказчика 100ProjectCustomer_Надпись Заказчик 100GIP_Надпись ГИП 100ProjectYear_Надпись Дата занесения 100Comment_НадписьComment 100Stage_OTR_НадписьОТР 100Stage_P_НадписьП 100Stage_R_НадписьР 100IsCapitalObj_Надпись IsCapitalObj 100IsLinearCapitalObj_Надпись IsLinearCapitalObj 100Надпись26 Список проектов 109ProjectMainID ProjectMainID 109ProjectName ProjectName 109ProjectShortNameProjectShortName 109ProjectCustomerIDProjectCustomerID 109ProjectCustomerProjectCustomer 109ProjectYear ProjectYear 109Comment Comment 106Stage_OTR ==== 106Stage_P ==== 106Stage_R ==== 109IsCapitalObj IsCapitalObj 109IsLinearCapitalObjIsLinearCapitalObj 102Линия28 ==== 111ПолеСоСписком31GIP///SELECT Сотрудники.id_w, Сотрудники.WorkerFamily FROM Сотрудники WHERE (((Сотрудники.WorkerPosition)="ГИП")); 104Кнопка29 Редактировать проект 104Кнопка30 Создать проект
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673552
Фотография Quiet333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
я вывожу в текстовик в таком виде(тип контрола, имя контрола, данные)

А какой процедурой?
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673613
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург.. Controls F1
_Sergio2005_как узнать что это за объект ControlType F1 (Enum AcControlType)По моему это самое простое решение:
Код: vbnet
1.
2.
3.
4.
Dim a As Control
For Each a In Controls
Debug.Print a.Name; a.ControlType
Next
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673631
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuПо моему это самое простое решение:
мой первый вариант был почти такой же
Код: vbnet
1.
2.
3.
4.
Dim a As Control
For Each a In Controls
Debug.Print  a.ControlType,a.Name
Next



затем добавила
--текст на надписи и кнопке
--источник данных для текст боксов и флажков
--источник данных для списков и формы
--потом стала выводить в текстовики для всей базы в целом
Код: vbnet
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
Option Compare Database
Option Explicit
Dim doc As DAO.Document
Dim dbs As DAO.Database

Dim s1
Sub mspravka()
If Len(Dir("c:\temp\forms\*.*")) > 0 Then
Kill "c:\temp\forms\*.*"
End If

If Len(Dir("c:\temp\reports\*.*")) > 0 Then
Kill "c:\temp\reports\*.*"
End If

mform
mreport
End Sub
Sub mform()

Dim frm As Form
Set dbs = CurrentDb
For Each doc In dbs.Containers("forms").Documents
s1 = doc.Name
Debug.Print s1
DoCmd.OpenForm s1, acDesign, , , , acHidden
mcolor s1, , 1
DoCmd.Close acForm, s1, acSaveYes
Next doc
End Sub

Sub mreport()

Dim frm As Report
Set dbs = CurrentDb
For Each doc In dbs.Containers("reports").Documents
s1 = doc.Name
Debug.Print s1
DoCmd.OpenReport s1, acDesign, , , , acHidden
mcolor s1, "reports", 1
DoCmd.Close acReport, s1, acSaveYes
Next doc
End Sub


Sub mcolor(sname, Optional stype As String = "forms", Optional r As Long = 0)
If Len(Dir("c:\temp", vbDirectory)) = 0 Then
MkDir "c:\temp"
End If

If Len(Dir("c:\temp\forms", vbDirectory)) = 0 Then
MkDir "c:\temp\forms"
End If

If Len(Dir("c:\temp\reports", vbDirectory)) = 0 Then
MkDir "c:\temp\reports"
End If

If r = 0 Then Exit Sub
''''''''
Dim CTR As Control
Dim OBJ As Object
Dim frm As Form
Dim rpt As Report
Dim que As DAO.QueryDef
Dim s1, J1, sname1
Reset


If stype = "forms" Then
For Each frm In Forms
If frm.Name = sname Then
Set OBJ = Forms(sname)
sname1 = zamena(sname)
Open "c:\temp\forms\" & sname1 & ".txt" For Output As #1
GoTo n_frm
End If
Next frm
MsgBox sname & " no found"
Exit Sub

Else
''Set obj = Reports(sname)
''Open "c:\temp\reports\" & sname & ".txt" For Output As #1
For Each rpt In Reports
If rpt.Name = sname Then
Set OBJ = Reports(sname)
sname1 = zamena(sname)
Open "c:\temp\Reports\" & sname1 & ".txt" For Output As #1
GoTo n_frm
End If
Next rpt
MsgBox sname & " no found"
Exit Sub
End If
''''''''''''''''''''''''''''
n_frm:



Debug.Print OBJ.Name, "=================="
Print #1, OBJ.Name, "=================="
s1 = OBJ.RecordSource
Print #1, s1
Debug.Print s1
'''''''''''''''
For Each que In CurrentDb.QueryDefs
If InStr(s1, "SELECT ") = 0 Then
J1 = 0
End If
If LCase(que.Name) = LCase(s1) Then
Print #1, que.SQL
Print #1, "================"
Exit For
End If
Next que
''''''''''''''''
For Each CTR In OBJ.Controls
J1 = CTR.ControlType
Print #1, J1, CTR.Name,
If J1 = 109 Then
s1 = CTR.ControlSource

If Mid(s1, 1, 1) = "=" Then
Debug.Print J1, CTR.Name, s1
CTR.BackColor = vbGreen

Else
CTR.BackColor = vbYellow
End If
ElseIf J1 = 100 Or J1 = 104 Then
s1 = CTR.Caption
ElseIf J1 = 111 Then
s1 = CTR.ControlSource & "///" & CTR.RowSource



Else
s1 = "===="
End If
s1 = Replace(s1, Chr(13), "~")
s1 = Replace(s1, Chr(10), "~")
s1 = Replace(s1, Chr(11), "~")

Print #1, s1
Next CTR
Reset
End Sub
Function zamena(zname)
Dim sw
sw = zname
sw = Replace(sw, ".", "_")
sw = Replace(sw, ",", "_")
sw = Replace(sw, "\", "_")
sw = Replace(sw, "/", "_")
sw = Replace(sw, """", "_")
sw = Replace(sw, "'", "_")
zamena = sw
End Function
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673664
Фотография Quiet333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Поиграюсь...
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673675
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,
Я понял так что у ТС сложность в том чтоб перебрать элементы формы а уж как их представить-вариантов много-пусть делает как желает
("Я так думаю"-Мимино)
...
Рейтинг: 0 / 0
Как программно узнать список объектов на форме?
    #39673774
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim a As Control
For Each a In Controls
If a.Section = 0 Then
    If a.ControlType = 100 Then Debug.Print "надпись - '" & Left(a.Name, InStr(a.Name, "_") - 1) & "'"
    If a.ControlType = 104 Then Debug.Print "кнопка - " & a.Name
    If a.ControlType = 109 Then Debug.Print "поле - " & a.Name
    If a.ControlType = 112 Then Debug.Print "подчФ - " & a.Name
'и т.д для нужных Вам типов
End If
Next
Me.ctl.SetFocus 'любой элемент-убираем фокус с кнопки-если процедура выполняется по её нажатию
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно узнать список объектов на форме?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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