Улучшим интерфейс Лоции (Атриб/Шаг) обмен опытом

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Улучшим интерфейс Лоции (Атриб/Шаг) обмен опытом

Сообщение Александр »

Как использовать фотографии сотрудников на формах - очень просто

1.У вас есть список пользователей БД
например ID 44 Иванов иван Иванович ID 222 Петров Петр Пертович
2. У вас есть форма
3. У вас есть каталог 'PartY\icons\Фотографии сотрудников
где лежат Иванов Иван Иванович.gif Петров Петр Петрович.gif в формате 3х4
4. Делаете на форме вычисляемое поле размеровм 260x296
Выражение для заполнения данного поля следующее

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

User_Name = Set ( f_UserName(g_UserID$) ) //прочитать имя пользователя по ID

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

Bitmap ( 'icons\Фотографии сотрудников\'+ User_Name+'.gif' ) //отобразить
Последний раз редактировалось Александр 27 сен 2006, 13:09, всего редактировалось 1 раз.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Работа с иконками

В свое время потерял много времени, итак:
1. Лоция использует стандартные иконки 16х16х256 c прозрачностью, вы можете использовать 'вложенные' иконки содержащие несколько изображений (формат .ico) Лоция возьмет оттуда только 16х16
2. Вы можете использовать цвета XP и выше но тень будет черным цветом и выглядит это ужасно
3. Вы можете использовать в качестве иконок .gif но при выборе объекта на закладке дерево проекта они отображаться не будут - хотя просто в дереве проекта выглядят лучше чем .ico
4. Вы можете управлять иконками (.gif) на форме простым действием

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

Bitmap ( 'icons\base\'+case(select when 0 then 'icon1' when 1 then 'icon2' when 2 then 'icon3' when 3 then 'icon4' )+'.gif')

5. Для работы с иконками использовалась программа Axialis IconWorkshop которая понимает все форматы иконок в том числе и кроссплатформенные
6. Для получения .gif из иконок использовался формат CupmuServe GIF с прозрачностью
(ps если что не так - поправьте, мне тоже интересно) :wink:
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

к вопросу об иконках
недавно мне сотрудники Лоции показали такую штуку - можно сделать динамическое обновление формы этапа работы. для этого нужно добавить действие на этот этап с выполнением ДО открытия окна, в действии сделать функцию
f_ModifyForm ( this , '' , 'DataWindow.Timer_Interval=20')
не знаю пока, что значит 20, но после добавления такой функции вычисляемое поле с выражением
string(now(), 'f'))
показывает ДИНАМИЧЕСКИ десятые доли секунды, то есть реально "бегают" циферки.
если пойти немного дальше и для какого то элемента на этой форме в свойстве Видимость написать вот такое выражение
if ( number(string(now(), 'f'))>=5, 1, 0)
то можно устроить подобие анимации, элемент будет то появляться, то снова пропадать. неплохо, если нужно привлечь внимание очень невнимательного юзера к какой то очень важной информации :-)
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

> Лоция возьмет оттуда только 16х16
Да вроде нет, у меня 32х32 прокатывало.
А насчет gif'а в иконках - так это даже документировано в начале, что можно только ico и bmp. Видать, ограничение среды :evil: А может, что-то еще мешает
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Насчет .gif привязанного к типу объекта - имелось в виду следующее (зесветил Андрея (если хочешь уберу)) т.е. .gif в дереве проекта виден (и лучше чем .ico) а в другом (при выборе объекта) почему то нет
(фото)
Изображение

Дополнение (по замечанию Андрея см.ниже) У первых объектов стоят .ico а контактным лицам я влепил .gif (для примера)
Цвета действительно куда-то уходят
Последний раз редактировалось Александр 29 сен 2006, 10:22, всего редактировалось 3 раза.
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

ой.... он и нас посчитал... :shock:
:D :D :D
да, примерно то же самое и с .ico в 32bit, в дереве проекта ваще красота, а вот в некоторых других деревьях (при импорте, кажется... или при открытии документа...) получается очень страшная картина... 32бит приводится к 16 цветам... хотя стоп... на картинке у конкретных лиц иконки вообще нету, а у других объектов - есть, но немного в меньшем цвете... странно...
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Продолжаем разговор
Фрагмент к первому топику
(фото)
Изображение

Как вывести знак гороскопа на форму- вот в чем вопрос?
Вот так

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

//делаем на форме невидимое вычисляемое поле в которое передается дата рождения (поле называется int)
Day(  a100000006300005  )+Month(  a100000006300005  )*100 
//второе вычисляемое поле показывает результат
if(int<=120,'Козерог',if(int<=218,'Водолей',if(int<=320,'Рыбы',if(int<=420,'Овен',if(int<=521,
'Телец',if(int<=621,'Близнецы',if(int<=722,'Рак',if(int<=823,'Лев',if(int<=923,'Дева',if(int<=1023,
'Весы',if(int<=1122,'Скорпион',if(int<=1221,'Стрелец',''))))))))))))
:lol: :lol:
Последний раз редактировалось Александр 29 сен 2006, 10:22, всего редактировалось 1 раз.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Как показать справку на форме
Смотрим...
1. Создать числовую переменную привязать ее к вычисляемому полю с именем help - тип редактирования Флажек
2. Создать строку без текста, стиль тень, фон кнопка, порядок-передний план
3. Создать строку подсказки ,порядок - передний план...
4. Создать вычисляемое поле с .gif иконкой, порядок- передний план...
5. Пунктам 2-4 поставить видимость if(help=1,1,0)

Все пошел работать, а то зависну тут навсегда :wink:
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Может кому будет полезно,
Если вам нужны логические даные (0/1) то в ряде случаев нет смысла (на мой взгляд) создавать дополнительные атрибуты объекту. Мы используем один числовой атрибут - помня о том что это 16 разрядное число и его можно обработать поразрядно т.е. для хранения следующих флагов (например 15 штук)
(фото)
Изображение
используется один числовой атрибут, который обрабатывается следующим образом

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

  
шаг //прочитать значения
    Inf = AttribGet ( a_Object , LinkID_0 , Inf_atr )
    Ch15 = Set ( if(abs( Int (Inf /16384) - Int (Inf  / (16384*2) )*2 )=0,'0','1') )
    Ch14 = Set ( if(abs( Int (Inf /8192) - Int (Inf  / (8192*2) )*2 )=0,'0','1') )
...
шаг //проанализировать значения 15 бита
    bit = Set ( 16384 )
    GoTo ( if(Ch15='0','15_0','15_1') ) //определить что с ним делать
шаг //установить в 0
    GoTo ( if(abs( Int (Inf /bit) - Int (Inf  / (bit*2) )*2 )=0,'14','') )
    Inf = Set ( Inf-bit )
    GoTo ( '14' )
шаг //установить в 1
    GoTo ( if(abs( Int (Inf /bit) - Int (Inf  / (bit*2) )*2 )=1,'14','') )
    Inf = Set ( Inf+bit )
шаг //проанализировать значения 14 бита
    bit = Set ( 8192 )
...
анализ такого атрибута на форме в плане иконок - времени не занимает
анализ этого атрибута в поиске/выражении может вызвать неоднозначность, поэтому в ряде случаев мы дублируем его строковым атрибутом в котором отображаются (если включен флаг) эквивалентные строковые значения через ';' И поиск по данной строке упрощается

Таким образом вместо 15 атрибутов мы используем 1(+1)
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

ЗдОрово. Про двоичное хранение как-то в голову не приходило. А ведь просто, как банный лист.
Александр, а вы тоже гений :D
Двух гениев форум, надеюсь, выдержит :lol: :lol: :lol:

А вот обработка как-то сложна для моего понимания (значит, я не гений, да :?: :oops:). Я бы вообще не стал бы число делать. а сделал бы строку. Или число преобразовал бы в строку и брал бы номер разряда. Если вернется 0 - false, иначе - true.
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Александр писал(а):Продолжаем разговор
Фрагмент к первому топику

Day( a100000006300005 )+Month( a100000006300005 )*100
//второе вычисляемое поле показывает результат
if(int<=120,'Козерог',if(int<=218,'Водолей',if(int<=320,'Рыбы',if(int<=420,'Овен',if(int<=521,
'Телец',if(int<=621,'Близнецы',if(int<=722,'Рак',if(int<=823,'Лев',if(int<=923,'Дева',if(int<=1023,
'Весы',if(int<=1122,'Скорпион',if(int<=1221,'Стрелец',''))))))))))))
[/code]
:lol: :lol:
Здесь, по-моему не хватает пацанов и пацанок, котоые родились после 21 декабря. Наверное, в последнем if нужно во втором параметре поставить 'Козерог'.
А я бы case использовал, нагляднее получается, без вложенности.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Сорри :?

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

if(int<=120,'Козерог',if(int<=220,'Водолей',if(int<=320,'Рыбы',if(int<=420,'Овен',
if(int<=521,'Телец',if(int<=621,'Близнецы',if(int<=722,'Рак',if(int<=823,'Лев',
if(int<=923,'Дева',if(int<=1023,'Весы',if(int<=1122,'Скорпион',if(int<=1221,'Стрелец','Козерог')))))))))))) 
Но в случае неверно введенной даты все время будет 'Козерог', а как описать это через cаse
case(int when 512<is<621??? в голову не приходит :roll:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Case (int
When is <= 120 Then 'Козерог'
When is <= 220 Then 'Водолей'
When is <= 320 Then 'Рыбы'
When is <= 420 Then 'Овен'
When is <= 521 Then 'Телец'
When is <= 621 Then 'Близнецы'
When is <= 722 Then 'Рак'
When is <= 823 Then 'Лев'
When is <= 923 Then 'Дева'
When is <= 1023 Then 'Весы'
When is <= 1122 Then 'Скорпион'
When is <= 1221 Then 'Стрелец'
Else 'Козерог')

Кажется так :oops:
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

да нет, это все понятно, я спрашивал о возможности создания следующей произвольной конструкции
case(int when 512<is<621 then 'Строка1' when 0>is<=10 then 'Строка2' ...
и т.д. - т.е. использование IS для проверки на вхождение в диапазон внутри операторов выбора if/case? :roll:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Как на форме использовать возможность передать в действие 'ID' кнопки
Смотрим...
1.Есть атрибутивная форма (..снова тебя посчитал :? )
(фото)
Изображение
2.Есть одно действие повешенное на эти две кнопки. (Действие для этих двух кнопок абсолютно одинаковое за исключением того, что по одной из них нужно получить чуть больше информации)
3.Создаем в действии числовую переменную 'ID_Button'
4.На первой кнопке передаем в действие 0 (ID_Button=0). На второй кнопке передаем в действие 1 (ID_Button=1)
5.Дальше как обычно...
:lol:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить