Шаблоны...

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость » 24 Декабрь 2003, 18:48

Привет всем!

Ниже кодовый шаблон. Почему переменная %FileList пуста несмотря на то, что файлы в схематике присутствуют. Подскажите что я сделал
неправильно? Мне нужно получить в %FileList список всех открытых файлов в процедуре. Спасибо.

Код: Выделить всё

#CODE(SaveFileState,'Сохранить состояние файла(ов)')
#PREPARE
  #DECLARE(%FileList),UNIQUE
  #IF(%Primary)
    #ADD(%FileList,%Primary)
  #ENDIF
  #FOR(%Secondary)
    #ADD(%FileList,%Secondary)
  #ENDFOR
  #FOR(%OtherFiles)
    #ADD(%FileList,%OtherFiles)
  #ENDFOR
#ENDPREPARE
#BOXED,SECTION
  #BOXED,AT(,0),WHERE(ITEMS(%FileList))
    #BOXED('Сохранить состояние выбранных файлов')
      #PROMPT('Файлы:',FROM(%FileList)),%SelectedFiles,SELECTION('Доступные файлы'),INLINE
    #ENDBOXED
  #ENDBOXED
  #BOXED,AT(,0),WHERE(~ITEMS(%FileList))
    #DISPLAY('Данная процедура не содержит файлов в файловой схематике.'),AT(,,180)
  #ENDBOXED
#ENDBOXED
Алексей,
начальник отдела ПТО
ООО "ОРК"

mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://atinet.hypermart.net
http://www.nikasoft.co.uk
http://clarionline.comprise-software.com (FAQ-онлайн)
irc: irc.lucky.net:6669, channel #clarion, Bambino
origin: "Пpодаются часы с боем. Бой бyдет ходить вслед за Вами и носить часы."

(Добавление)

У тебя в список не вносятся файлы, входящие в шаблоны.

Код: Выделить всё

  #If (%Primary)
    #Add(%FileList,%Primary)
    #For(%Secondary)
      #Add(%FileList,%Secondary)
    #End
  #EndIf
  #For (%ActiveTemplate)
    #For(%ActiveTemplateInstance)
      #Add(%FileList,%Primary)
      #For(%Secondary)
        #Add(%FileList,%Secondary)
      #End
    #EndFor
  #EndFor
  #For(%OtherFiles)
      #Add(%FileList,%OtherFiles)
  #End
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@renet.com.ru (дом)
ICQ# 75924439

(Добавление)

В том то и дело, что все %Primary,%Secondary,%OtherFiles пустые... :(

Алексей,
начальник отдела ПТО
ООО "ОРК"

(Добавление)

В целом-да, но для внутренних контролов (%ActiveTemplate) - нет...

--
C уважением,
Юрий Философов

Дык и так делал... не работает :(

--
Алексей

Что-то ни фига я вас не пойму...
да работает оно!! только что проверял

Код: Выделить всё

#PREPARE
  #DECLARE(%FileList),UNIQUE
  #For (%ActiveTemplate)
    #For(%ActiveTemplateInstance)
      #IF(%Primary) ! Если не проверять то в список попадает
                    ! пустая строка
        #Add(%FileList,%Primary)
        #For(%Secondary)
          #Add(%FileList,%Secondary)
        #End
      #ENDIF
    #EndFor
  #EndFor
  #For(%OtherFiles)
      #Add(%FileList,%OtherFiles)
  #End
#ENDPREPARE
...
--
С уважением, Владимир Дегтяренко

Написал: ClaList(2)

mike_ch
Бывалый
Сообщения: 62
Зарегистрирован: 11 Июль 2007, 13:21
Откуда: Беларусь, Минск

Сообщение mike_ch » 03 Январь 2008, 18:05

Извините что offtop, не хочу по такой мелоче новую тему открывать. Может кто поделится русским stdfunc.tpw для cla6...

Денис
Бывалый
Сообщения: 70
Зарегистрирован: 07 Июль 2005, 4:39
Откуда: Хабаровск
Контактная информация:

Сообщение Денис » 18 Январь 2008, 2:01

А разве не нужно объявлять переменную как MULTI ?

Код: Выделить всё

#DECLARE(%FileList), MULTI, UNIQUE

Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 1:35
Откуда: Москва
Контактная информация:

Сообщение Олег » 18 Январь 2008, 4:05

По хелпу, наличие аттрибута UNIQUE автоматически описывает переменную как список и аттрибут MULTI в этом случае уже не обязателен.
Что до самого шаблона, то было-бы неплохо делать что-то типа:

Код: Выделить всё

#FIX(%File,%Secondary)
#IF(%File)
  #ADD(%FileList,%File)
#ENDIF

Ответить