Здавствуйте!
Подскажите, как можно добавить свою кнопку в системный интерфейс?
Добавление своей кнопки в системный интерфейс
-
- заказчик
- Сообщения: 46
- Зарегистрирован: Вт, 13/01/2009 10:52
- Имя Фамилия: Сергей Головчак
- Откуда: Гипротрубопровод
Re: Добавление своей кнопки в системный интерфейс
Функциями конфигуратора:
Код: Выделить всё
cfsSetCurrentContainer ( 'RECWIN06.SCRAPPBUTTONS1' );
var iObj : LongInt;
cfsCreateObject ( 'BUTTON', 'SCRAPPBUTTONS1', 'MakeDogovorReport', false, iObj );
cfsSetProp ( iObj, cfpOrigin_X, 10 );
cfsSetProp ( iObj, cfpOrigin_Y, 245 );
cfsSetProp ( iObj, cfpSize_X, 92 );
cfsSetProp ( iObj, cfpSize_Y, 25 );
cfsSetProp ( iObj, cfpCommand, cmValue61 );
cfsSetProp ( iObj, cfpTitle, 'Договора' );
- Screw
- топ-софт
- Сообщения: 73
- Зарегистрирован: Пт, 14/09/2007 22:54
- Имя Фамилия: Виталий Корзюк
- Откуда: ТопСофт
- Контактная информация:
Re: Добавление своей кнопки в системный интерфейс
Атлантис 5.4.37:
Добавлены возможности перекрытия, расширения панелей, добавления закладок.
1. Перекрытие форматов. Синтаксис
OverloadFormats имя-формата, ...;
Удаляет старый формат, вставляет на его место новый.
Унаследованный код будет работать с новым форматом думая, что он - старый.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
2. Расширение форматов. Синтаксис
ExtendFormats имя-формата, ...;
Работает так - когда начинает компилиться
расширяющий формат, находит и подсовывает компилятору
старый формат. В итоге компилятор в него все и
добавляет. Необходимо оставлять пробелы там, где старые
элементы, иначе наложится новый на старый. Так же
добавляются и колонки в браузер. Удалять лишние
элементы можно стандартными функциями Атлантиса.
Следует учитывать, что при добавлении элементов в
строку к существующим элементам расстояние между новым
и старым может оказаться не таким, каким оно было бы
при компиляции формата целиком. Для придания формату
качественного вида, как обычно, следует воспользоваться
конфигурационным скриптом.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
3. Добавление закладок. Синтаксис
ExtendTabbedSheet имя-окна, ...;
Для главного окна интерфейса надо указать имя интерфейса.
Работает так - проверяет наличие в указанном окне
закладок. Если есть - разрешает добавлять, если нет -
нет. При этом, если имя окна было указано в секции
ExtendTabbedSheet, то будет работать нормально, если
нет - то выдастся обычное предупреждение.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
Для окон исторически можно было добавлять закладки. Это было из-за ошибки в коде.
Эта особенность оставлена, на нее выдается соответствующее предупреждение.
- poneatovski
- топ-софт
- Сообщения: 40
- Зарегистрирован: Чт, 25/06/2009 10:24
- Имя Фамилия: Анатолий Понятовский
- Откуда: Галактика
Re: Добавление своей кнопки в системный интерфейс
Как это можно использовать в конфигурировании и где можно об этом почитать?Screw писал(а):Атлантис 5.4.37:Добавлены возможности перекрытия, расширения панелей, добавления закладок.
1. Перекрытие форматов. Синтаксис
OverloadFormats имя-формата, ...;
Удаляет старый формат, вставляет на его место новый.
Унаследованный код будет работать с новым форматом думая, что он - старый.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
2. Расширение форматов. Синтаксис
ExtendFormats имя-формата, ...;
Работает так - когда начинает компилиться
расширяющий формат, находит и подсовывает компилятору
старый формат. В итоге компилятор в него все и
добавляет. Необходимо оставлять пробелы там, где старые
элементы, иначе наложится новый на старый. Так же
добавляются и колонки в браузер. Удалять лишние
элементы можно стандартными функциями Атлантиса.
Следует учитывать, что при добавлении элементов в
строку к существующим элементам расстояние между новым
и старым может оказаться не таким, каким оно было бы
при компиляции формата целиком. Для придания формату
качественного вида, как обычно, следует воспользоваться
конфигурационным скриптом.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
3. Добавление закладок. Синтаксис
ExtendTabbedSheet имя-окна, ...;
Для главного окна интерфейса надо указать имя интерфейса.
Работает так - проверяет наличие в указанном окне
закладок. Если есть - разрешает добавлять, если нет -
нет. При этом, если имя окна было указано в секции
ExtendTabbedSheet, то будет работать нормально, если
нет - то выдастся обычное предупреждение.
Если указаны координаты проверяет совпадение размеров. Если не указаны, берет от родителя.
Для окон исторически можно было добавлять закладки. Это было из-за ошибки в коде.
Эта особенность оставлена, на нее выдается соответствующее предупреждение.
-
- топ-софт
- Сообщения: 14
- Зарегистрирован: Вт, 05/05/2009 07:47
- Имя Фамилия: Виктор Носов
- Откуда: Галактика-Урал
Re: Добавление своей кнопки в системный интерфейс
Что-то не получается добавить кнопку функциями конфигуратора. Пытаюсь докомпилировать интерфейс PLATVED_KASSA (платежные ведомости в модуле Касса), пытаюсь создать объект функцией cfsCreateObject, указываю контейнер и по имени и по коду, но все равно объект не создается, возвращает ошибку - CfErrCantCreateObject -12
В чем может быть проблема?
alter interface "PLATVED_KASSA";
Overload
end;
Window wiPlatVed '' EscClose;
Show at (0, 1, 82, 30);
Panel pPlatVed;
Show at (, , , 12);
end;
handleEvent
cmInit:{
var iObj, res : LongInt;
res:=cfsGetCurrentContainerSelf
message( 'CurrentContainer '+ res );
res:= cfsCreateObject ( 'BUTTON', cfsGetCurrentContainerSelf, '777', false, iObj );
message( '1 '+ res );
res:= cfsSetProp ( iObj, 'cfpOrigin_X', 10 );
message( '2 '+ res );
res:= cfsSetProp ( iObj, 'cfpOrigin_Y', 245 );
message( '3 '+ res );
res:= cfsSetProp ( iObj, 'cfpSize_X', 92 );
message( '4 '+ res );
res:= cfsSetProp ( iObj, 'cfpSize_Y', 25 );
message( '5 '+ res );
res:= cfsSetProp ( iObj, 'cfpCommand', cmValue61);
message( '6 '+ res );
res:= cfsSetProp ( iObj, 'cfpTitle', '-----------' );
message( '7 '+ res );
inherited :: handleEvent (cmInit);
}
end;
end;
handleEvent
cmValue61:{
message('cmButton1 работает');
}
end;
end.
В чем может быть проблема?
alter interface "PLATVED_KASSA";
Overload
end;
Window wiPlatVed '' EscClose;
Show at (0, 1, 82, 30);
Panel pPlatVed;
Show at (, , , 12);
end;
handleEvent
cmInit:{
var iObj, res : LongInt;
res:=cfsGetCurrentContainerSelf
message( 'CurrentContainer '+ res );
res:= cfsCreateObject ( 'BUTTON', cfsGetCurrentContainerSelf, '777', false, iObj );
message( '1 '+ res );
res:= cfsSetProp ( iObj, 'cfpOrigin_X', 10 );
message( '2 '+ res );
res:= cfsSetProp ( iObj, 'cfpOrigin_Y', 245 );
message( '3 '+ res );
res:= cfsSetProp ( iObj, 'cfpSize_X', 92 );
message( '4 '+ res );
res:= cfsSetProp ( iObj, 'cfpSize_Y', 25 );
message( '5 '+ res );
res:= cfsSetProp ( iObj, 'cfpCommand', cmValue61);
message( '6 '+ res );
res:= cfsSetProp ( iObj, 'cfpTitle', '-----------' );
message( '7 '+ res );
inherited :: handleEvent (cmInit);
}
end;
end;
handleEvent
cmValue61:{
message('cmButton1 работает');
}
end;
end.
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
Re: Добавление своей кнопки в системный интерфейс
Кнопка принадлежит конкретному скрину просто. Например, пост LaaLaa в теме
https://forum.galaktika.ru/viewtopic.php?t=455
демонстрирует сей момент.
https://forum.galaktika.ru/viewtopic.php?t=455
демонстрирует сей момент.
- Screw
- топ-софт
- Сообщения: 73
- Зарегистрирован: Пт, 14/09/2007 22:54
- Имя Фамилия: Виталий Корзюк
- Откуда: ТопСофт
- Контактная информация:
Re: Добавление своей кнопки в системный интерфейс
К вопросу poneatovski: упомянутая доработка касается только докомпиляции интерфейсов, и к их конфигурированию отношения не имеет.