powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ControlCount
6 сообщений из 6, страница 1 из 1
ControlCount
    #32635348
miv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
miv
Гость
Добрый день!
Этот вопрос уже когда-то задавался
но ответа на него нет.

THISFORM.controlcount не может "достучаться"
до объектов внутри PageFrame.

А очень бы хотелось :(

Делать в цикле проверку на базовый класс и потом считать кол-во
страниц и потом опять все перебирать - это дом,который построил Джек.
А если Frame внутри Frame?
Мда...
Есть предложения?
С уважением.
...
Рейтинг: 0 / 0
ControlCount
    #32635407
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекурсию еще никто не отменял:

Код: 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.
function GetControlCount

lparameters toObject

local lnCount, loControl

lnCount =  0 
with toObject
   lcBaseClass = upper(.BaseClass)

   do case 
   case m.lcBaseClass+'$' $ "FORM$PAGE$CONTAINER$"
        for each loControl in .Controls
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   case .Base == "FORMSET"
        for each loControl in .Forms
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   case .Base == "PAGEFRAME"
        for each loControl in .Pages
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   otherwise
        lnCount =  1 
   endcase
endwith
return m.lnCount
...
Рейтинг: 0 / 0
ControlCount
    #32635418
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка:
local lnCount, loControl
заменить на
local lnCount, loControl, lcBaseClass
...
Рейтинг: 0 / 0
ControlCount
    #32635483
miv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
miv
Гость
Честно говоря, не работает :(
Сразу начинает ругаться на не найденные свойства BASE и FORM
Потом на несовпадение типов данных...

FOR m.cntobj=1 TO THISFORM.ControlCount
? GetControlCount(THISFORM)
WAIT ""
ENDFOR

Что-то не так?
...
Рейтинг: 0 / 0
ControlCount
    #32635635
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, понятно:

Код: 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.
function GetControlCount

lparameters toObject

local lnCount, loControl

lnCount =  0 
with toObject
   lcBaseClass = upper(.BaseClass)

   do case 
   case m.lcBaseClass+'$' $ "FORM$PAGE$CONTAINER$"
        for each loControl in .Controls
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   case m.lcBaseClass == "FORMSET"
        for each loControl in .Forms
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   case m.lcBaseClass == "PAGEFRAME"
        for each loControl in .Pages
            lnCount = m.lnCount + GetControlCount(m.loControl)
        endfor
   otherwise
        lnCount =  1 
   endcase
endwith
return m.lnCount
...
Рейтинг: 0 / 0
ControlCount
    #32635685
miv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
miv
Гость
Это просто праздник какой-то сегодня :))
Все считается!
Рекурсивный вызов - просто находка.
И где было раньше мое серое вещество?
Осталось только добраться до
определенного property объекта и присвоить
ему некое значение - и можно расслабиться.
Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ControlCount
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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