Как получить префикс от Browse

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
mpn2
Посетитель
Сообщения: 32
Зарегистрирован: 24 Февраль 2015, 17:15

Как получить префикс от Browse

Сообщение mpn2 »

Admin писал(а): 04 Май 2021, 3:21 Вместо %CustomGlobalDeclarations напишите %AfterFileDeclarations
РЕЗУЛЬТАТ ПОЛУЧИЛСЯ ИНТЕРЕСНЫЙ!
1. Глобальная переменная создалась и как бы появилась в том месте где и надо, т.е. прописалась в файле объявления глобальных переменных: ###_GD.CLW НО!
Но создалась она не с префиксом BLO (от файла BLOCK.tps), а создалась она с префиксом TYP (наверно от файла TYPE.tps) и в разделе ПОСЛЕ описания переменных для файла Histopy2.tps (История вторая.).... и при этом образовалось 45 ошибок.
А мне как то надо получить то, что я пишу пока ручками и то что пока закоментарил на предпоследней строчке кода.

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

History2::Used       LONG,THREAD

  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
  CopyTYP LIKE(TYP:Record),PRE(CTYP)
Sort:Name           STRING(ScrollSort:Name)
Sort:Name:Array     STRING(3),DIM(100),OVER(Sort:Name)
Sort:Alpha          STRING(ScrollSort:Alpha)
Sort:Alpha:Array    STRING(2),DIM(100),OVER(Sort:Alpha)
Sort:Family         STRING(ScrollSort:Family)
Sort:Family:Array   STRING(3),DIM(100),OVER(Sort:Family)
Sort:Cyrilic        STRING(ScrollSort:Cyrilic)
Sort:Cyrilic:Array  STRING(2),DIM(100),OVER(Sort:Cyrilic)

Glo:stNameINIFile STRING(FILE:MaxFileName)
CopyMat     Like(Mat:Record),PRE(CMat)         !Для копирования записи
CopyTyp     Like(Typ:Record),PRE(CTyp)         !Для копирования записи
CopyPla     Like(Pla:Record),PRE(CPla)         !Для копирования записи
!CopyBlo     Like(Blo:Record),PRE(CBlo)         !Для копирования записи
!----------------------------------------------------------------------
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2577
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как получить префикс от Browse

Сообщение finsoftrz »

Прежде чем использовать %File и %FilePrefix, %File надо зафиксировать.
Например, #FIX(%File, %FsUserTable), где %FsUserTable значение из промпта шаблона.
Промпт в шаблоне, например, такой:

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

#BUTTON('Таблицы пользователя'),MULTI(%FsUserTables,%FsUserTable), AT(10,, 180)
   #PROMPT('Таблица',FILE),%FsUserTable
#ENDBUTTON

....

  #FOR(%FsUserTables)
      #FIX(%File,%FsUserTable)
      ...
  #ENDFOR    
  
Если проект multi dll, то надо еще это учесть в декларации.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Admin
Администратор
Сообщения: 3667
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Как получить префикс от Browse

Сообщение Admin »

mpn2 писал(а): 04 Май 2021, 10:34 РЕЗУЛЬТАТ ПОЛУЧИЛСЯ ИНТЕРЕСНЫЙ!
Если просто так вставлять, может что угодно получиться... вплоть до детей :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2577
Зарегистрирован: 06 Ноябрь 2014, 12:48

Как получить префикс от Browse

Сообщение finsoftrz »

Это было романтично. :shock:
C6/C11, ШВС, tps/btrieve.
mpn2
Посетитель
Сообщения: 32
Зарегистрирован: 24 Февраль 2015, 17:15

Как получить префикс от Browse

Сообщение mpn2 »

Admin писал(а): 04 Май 2021, 12:16 Если просто так вставлять, может что угодно получиться... вплоть до детей
Где ж вы раньше были, у меня уже трое! :D
mpn2
Посетитель
Сообщения: 32
Зарегистрирован: 24 Февраль 2015, 17:15

Как получить префикс от Browse

Сообщение mpn2 »

Все написал!

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

#!============================================ mpn =========================================
#!==========================================================================================
#AT(%AfterFileDeclarations)
#FIX(%File,%Primary)
#IF(%CopyReAllowed)                     #!Если стоит "галочка" о копировании записи
Copy%FilePrefix     Like(%FilePrefix:Record),PRE(C%FilePrefix)         !Для копирования записи
#ENDIF
#ENDAT
#!==========================================================================================
#!после того как окно открыто---------------------------------------------------------------
#AT(%AfterWindowOpening)
    !========== Данная процедура копирует запись (Продолжение - F5) ========================
    !==== mpn: код шаблона прописан в файле: Control.tpw ===================================
    !=======================================================================================
    #IF(%CopyReAllowed)                     #!Если стоит "галочка" о копировании записи
      IF C%FilePrefix:id <> 0 then           !Если  Глобальная переменная для копирования не пуста,
         id# = %FilePrefix:id                !тогда запомним код вновь созданной записи
         %FilePrefix:Record = Copy%FilePrefix        !Присвоим новой записи значение старой
         %FilePrefix:id = id#                !Вернем новой записи ее новый Код
         #EMBED(%CopyMPN,'после того как запись скопирована (моя точка вставки)')
         !очистим необходимые поля: --------------------------------------------------------
         CLEAR(Copy%FilePrefix)              !Чистим Глобальную переменную
         !Чистим поля после копирования (если это надо)
         #FOR(%ClearFields)
         CLEAR(%ClearField)
         #ENDFOR
      END
    #ELSE
    !===== mpn: Процедура продолжения копирования записи НЕ АКТИВИЗИРОВАНА!!! ==============
    #ENDIF
#ENDAT
#!после того как окно открыто---------------------------------------------------------------
РЕЗУЛЬТАТ:

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

  ! Start of "После того, как окно открыто"
! [Priority 4000]
      !========== Данная процедура копирует запись (Продолжение - F5) ========================
      !==== mpn: код шаблона прописан в файле: Control.tpw ===================================
      !=======================================================================================
        IF CMAT:id <> 0 then           !Если  Глобальная переменная для копирования не пуста,
           id# = MAT:id                !тогда запомним код вновь созданной записи
           MAT:Record = CopyMAT        !Присвоим новой записи значение старой
           MAT:id = id#                !Вернем новой записи ее новый Код
           ! Start of "после того как запись скопирована (моя точка вставки)"
           ! [Priority 5000]

           ! End of "после того как запись скопирована (моя точка вставки)"
           !очистим необходимые поля: --------------------------------------------------------
           CLEAR(CopyMAT)              !Чистим Глобальную переменную
           !Чистим поля после копирования (если это надо)
           CLEAR(MAT:Cena0)
           CLEAR(MAT:Prim_Sch)
           CLEAR(MAT:Prim_Skl)
           CLEAR(MAT:Prim)
        END
  ! [Priority 8500]

  ! End of "После того, как окно открыто"
Всем спасибо за помощь!!!
Ответить