powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Один Вопросик
7 сообщений из 7, страница 1 из 1
Один Вопросик
    #34784599
Alex_Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как определить кол-во элементов выбранного
Базового класса , например, на Форме

Спасибо
...
Рейтинг: 0 / 0
Один Вопросик
    #34784665
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nCol=0
FOR i=1 TO ThisForm.ControlCount
IF ThisForm.Controls(i).BaseClass="TextBox"
nCol=nCol+1
ENDIF
ENDFOR
...
Рейтинг: 0 / 0
Один Вопросик
    #34784755
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае, довольно сложно. Приведенный MiklS пример не учитывает вложенных элементов. Например, внутри контейнеров или на страницах PageFrame. Т.е. в общем случае придется писать рекурсию.

Однако если нужно не считать объекты, а модифицировать некое их свойство, то это можно сделать через SetAll().

Также, если вообще все объекты формы сделаны на основе собственных классов, то через то же SetAll() можно заставить все объекты сообщать о себе необходимую информацию при помощи X_ACCESS() или X_ASSIGN() методов.
...
Рейтинг: 0 / 0
Один Вопросик
    #34784796
Alex_Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю, Уважаемые
...
Рейтинг: 0 / 0
Один Вопросик
    #34784833
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Судя по по поучительному тону ВладимирМ - это Владимир Максимов. Ну сним спорить сложно.
Хотя Grid - тоже объект-котейнер (естественно в нем есть ещё Columnы), но сколько тогда текст боксов будет на форме? по этому я и привел самый простой пример. Ну а для любого контейнера придётся естественно поторить код. Но как достучаться до класса Control, если в нём тоже есть TextBox ы?
...
Рейтинг: 0 / 0
Один Вопросик
    #34784917
Alex_Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю можно построить дерево из элементов
и его обойти

Спасибо
...
Рейтинг: 0 / 0
Один Вопросик
    #34787084
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TsДумаю можно построить дерево из элементов
и его обойти

Спасибо Можно просто обойти все элементы формы рекурсивно. Примерно так:
Код: plaintext
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.
*Метод ThisForm.ResizeObject()
lpara toObj
* Изменение размеров и шрифта объектов формы
* Ориентируемся только по полностью развернотому окну программы
* Считаем, что разработка была под 800x600 со шрифтом  9 
local lnK,loC
if type('gnDefaultFontSize') = 'N'
	lnK = gnDefaultFontSize /  9 
else
	lnK = _screen.width /  800 
endif
if pemstatus(toObj, 'Top',  5 )
	with toObj
		.top = toObj.top * lnK
		.left = toObj.left * lnK
		.height = toObj.height * lnK
		.width = toObj.Width * lnK
	endwith
endif
if pemstatus(toObj, 'FontSize',  5 )
	toObj.FontSize = round(toObj.FontSize * lnK,  0 )
endif
do case
	case pemstatus(toObj, 'Controls',  5 )
		for each loC in toObj.Controls
			this.ResizeObject(loC)
		endfor
	case pemstatus(toObj, 'Pages',  5 )
		for each loC in toObj.pages
			this.ResizeObject(loC)
		endfor
	case pemstatus(toObj, 'Buttons',  5 )
		for each loC in toObj.Buttons
			this.ResizeObject(loC)
		endfor
endcase
Вызываешь ThisForm.ResizeObject(thisform) - далее все контейнеры на форме пройдутся рекурсивно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Один Вопросик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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