Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно обратиться к компоненту label из цикла? / 12 сообщений из 12, страница 1 из 1
29.06.2006, 09:21
    #33820749
SVR
SVR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Здравствуйте!
У меня на форме размещено 256 компонентов label с именами
label1, label2, ... label256.
Я присваиваю этим компонентам значения таким образом:
ThisForm.label1.Caption='значение1'
Можно ли всем этим компонентам присваивать значения в таком цикле?
for i=1 to 256
<присваиваем значение>
endfor
Как в этом случае обращаться к компоненту label?
...
Рейтинг: 0 / 0
29.06.2006, 09:42
    #33820814
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Можно, например с помощью макроподстановки
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL  m.lcCommand,  m.lcValue 
FOR m.i =  1  TO  256 
   m.lcValue = 'Бла-Бла'
   m.lcCommand = [ThisForm.label] + CAST(m.i AS V( 3 )) + [.Caption='] + ;
   m.lcValue +[']
   &lcCommand
ENDFOR
Возможно тоже самое сделать через коллекцию THISFORM.Objects

С уважением, Алексей
...
Рейтинг: 0 / 0
29.06.2006, 10:09
    #33820906
SVR
SVR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Выдает ошибку:
Function name is missing ).
...
Рейтинг: 0 / 0
29.06.2006, 11:11
    #33821137
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Так вы сообщайте версию VFP !
Если у вас не 9, то вместо CAST(m.i AS V(3)) надо ALLTRIM(STR(m.i))
С уважением, Алексей
...
Рейтинг: 0 / 0
29.06.2006, 12:34
    #33821411
Al_fa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Макроподстновка здесь будет избыточна , хватит и именованного выражения

Код: plaintext
1.
2.
3.
FOR m.i =  1  TO  256 
   store 'Бла-Бла' to ('ThisForm.label' + transform(m.i) + '.Caption')
ENDFOR 
...
Рейтинг: 0 / 0
29.06.2006, 14:23
    #33821783
SVR
SVR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Все нормально. Получилось и тем, и другим способом. Спасибо!
...
Рейтинг: 0 / 0
29.06.2006, 14:25
    #33821790
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Луше бы сделал массив из Label меньше проблем было бы
...
Рейтинг: 0 / 0
29.06.2006, 20:35
    #33822808
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
А я бы все-таки сделал через коллекцию Objects.
Более эстетичнее выглядит код и не зависит от кол-во обектов Lable на форме

Код: plaintext
1.
2.
3.
4.
FOR EACH loLable IN THISFORM.Objects
	IF loLable.BaseClass = "Label"
		loLable.Caption = "Мой текст"
	ENDIF
ENDFOR
С уважением, Алексей
...
Рейтинг: 0 / 0
29.06.2006, 23:03
    #33822973
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Aleksey-KТак вы сообщайте версию VFP !
Если у вас не 9, то вместо CAST(m.i AS V(3)) надо ALLTRIM(STR(m.i))
С уважением, АлексейВот уж совсем не ALLTRIM, а PADR уж тогда ;-)
...
Рейтинг: 0 / 0
30.06.2006, 07:38
    #33823139
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Urri Aleksey-KТак вы сообщайте версию VFP !
Если у вас не 9, то вместо CAST(m.i AS V(3)) надо ALLTRIM(STR(m.i))
С уважением, АлексейВот уж совсем не ALLTRIM, а PADR уж тогда ;-)
И почему СОВСЕМ не ALLTRIM, а PADR ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
30.06.2006, 11:44
    #33823735
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Aleksey-K
Беру свои комментарии назад. Не въехал в контекст. Показалось, речь идет о select
...
Рейтинг: 0 / 0
03.07.2006, 14:17
    #33827588
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно обратиться к компоненту label из цикла?
Hi Aleksey!

В качестве ещё одной альтернативы:

loObj = GETPEM(ThisForm, "label" + ALLTRIM(STR(m.i)))
loObj.Caption = "Надпись # " + ALLTRIM(STR(m.i))

Это в ряде случаев даёт приличный выигрыш по скорости (GETPEM заметно
быстрее макро, а создание временной "короткой" ссылки позволяет сразу
обработать кучу свойств/методов объекта, не получая каждый раз эту ссылку
заново)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно обратиться к компоненту label из цикла? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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