powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перебор объектов!!!
8 сообщений из 8, страница 1 из 1
Перебор объектов!!!
    #34320953
MAJIbIIII
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ я знаю, что можно перебирать все формы такими инструкциями:
[src]for i=1 to thisformset.formcount
messagebox(thisformset.forms(i).name)

Внимание вопрос: можно ли перебрать на формочке все текстовые поля (ComboBox, TextBox и т.д.) ???
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34320984
kdanylo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP 9.0

Код: plaintext
1.
2.
3.
4.
5.
FOR lni = 1  TO thisform.Objects.count
?thisform.Objects[lni].class
?thisform.Objects[lni].name
ENDFOR 

...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34321108
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAJIbIIIIможно ли перебрать на формочке все текстовые поля (ComboBox, TextBox и т.д.) ???
Можно, но больно "муторно".

То, что привел kdanylo предполагает, что все объекты лежат непосредственно на форме. Нет PageFrame, Container, Control. Т.е. нет объектов-контейнеров, внутрь которых могли бы быть вложены искомые объекты.

Разумеется, это можно обойти через рекурсии. И так делают.

Но, если Вы укажете зачем Вам это надо, то, возможно, вполне достаточно окажется метода Object.SetAll(). Этот метод устанавливает нужное значение указанного свойства указанного класса объектов вне зависимости от их вложенности.
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34322090
MAJIbIIII
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdanyloVFP 9.0

Код: plaintext
1.
2.
3.
4.
5.
FOR lni = 1  TO thisform.Objects.count
?thisform.Objects[lni].class
?thisform.Objects[lni].name
ENDFOR 



Спасибо, вполне подходит

ВладимирММожно, но больно "муторно".

Не имеет значение.
Object.SetAll() - не совсем подходит: у меня имя объектов следующего формата: <имя>_replace, <имя>_insert, и если вторая часть имени - replace, это обозначает, что значение надо вставить не только в текущую таблицу, но все равно спасибо!!!
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34323128
MAJIbIIII
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получилось народ!!! Обрисую полную картинку:
У меня набор форм (FormSet), есть формочка (ShowWindow=2), на которой имена текстовых полей и комбо (ComboBox) в таком виде:
<имя таблицы>_<имя поля> (не спрашивайте почему, просто мне так удобнее).
Мне надо перебрать все объекты в настоящей форме, для всех техстовых полей (заданы с помощью: Define Class TextBox_ as TEXTBOX) и комбов (ComboBox, заданы с помощью Define Class ComboBox_ as COMBOBox) выполнить следующие действия:
Replace <имя поля (берется из имени объекта путем отсеивания первого элемента имени до знака "_"> WITH <имя таблицы>_<имя поля>.VALUE (THIS.VALUE) (для комбо - IIF(THIS.VALUE="",THIS.DISPLAYVALUE,THIS.VALUE)) IN <имя таблицы (формируется путем вычеркивания из названия объекта второй части имени после знака "_">


Во блин че придумал. Помогите плизззз :(

P.S. Прошлый пример выдает следующие ошибки:
THISFORM can only be used within a method.
Object <имя формы> is not found.
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34324797
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сообщение об ошибке надо понимать БУКВАЛЬНО! Там же ясно написано, что ключевое слово ThisForm можно использовать только внутри методов формы или объектов, находящихся на форме.

ГДЕ Вы пытаетесь выполнить этот код? Если в процедуре, то в качестве параметра необходимо передать в процедуру ссылку на форму. Эту самую ThisForm.
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34324982
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну если так хочется перебрать, то
делайте красиво

Код: plaintext
1.
2.
3.
4.
local loControl
for each loControl in thisform.controls
    ? loControl. ....
endfor

ок, но ведь Вы делаете свои классы.
для чего вы перебераете?
нужно с ними что-то сделать???

ну вот и делайте классу метод, именно классу, пусть
класс сам делает себе что-то
и проверяйте в переборе именно наличие этого метода


Код: plaintext
1.
2.
3.
if pemstatus(loControl,'MyMethod', 5 )
   loControl.MyMethod(....)
endif
это будет более логичным, и смотреть имя объекта не понадобится

класс Вы можете пронаследовать некоторое количество раз
и каждый уровень наделить нужными методами, свойствами и признаками
...
Рейтинг: 0 / 0
Перебор объектов!!!
    #34325171
ВладимирГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нравится использовать для таких задач клас от Collection.

Во вложении находится примитивный пример как организовать перебор
обьектов вне зависимости от вложенности.

Обьекты сами себя регистрируют в коллекцию при своей инициализации
А дальше управлять этим хозяйством трудностей не представляет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перебор объектов!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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