TlgOnlineTrendControl
Александр Родин, ООО "Нева Электрик"; 24.6.02

Динамически формирую вывод графиков с помощью subj.


В нем есть атрибуты BeginTime, EndTime, которые вроде как должны определять начальное и конечное время вывода графиков. Вроде как стоит поле, которое говорит, что они могут быть изменены динамически. При открытии окна C-Action видим, что возвращаемое значение должно иметь тип DATE (?!).

А теперь вопрос знатокам: Что это за тип DATE ? Собственно, какое представление он имеет (число, структура, строка, или что) ?
Второй вопрос, какой из известных SetProp-функций пользоваться для назначения данных атрибутов ?

Имеется ли в доках описание данного типа ?

Заранее спасибо.
Re: TlgOnlineTrendControl
Alexis; 24.6.02

импортируем и получаем:


inline DATE ICCTlgOnlineTrend::GetBeginTime ( ) {
DATE _result;
HRESULT _hr = get_BeginTime(&_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}

inline void ICCTlgOnlineTrend::PutBeginTime ( DATE pvarBeginTime ) {
HRESULT _hr = put_BeginTime(pvarBeginTime);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
}

inline DATE ICCTlgOnlineTrend::GetEndTime ( ) {
DATE _result;
HRESULT _hr = get_EndTime(&_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}

inline void ICCTlgOnlineTrend::PutEndTime ( DATE pvarEndTime ) {
HRESULT _hr = put_EndTime(pvarEndTime);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
}

смотрим и видим:
typedef double DATE;
Re: TlgOnlineTrendControl
Евгений Трунов; 25.6.02

DATE - это действительно тип данных double. Целая часть - число дней, прошедших от 30.12.1899, дробная - относительная часть суток в часе. Т.е., например, 28.10.2001 16:30:00 будет представляться как 37192.6875 (GMT+2). Часто используется для представлении времени в OCX-объектах.


Можно задавать BeginTime и EndTime как строки, т.е. как

sprintf(szBeginTime, "%02d.%02d.%4d %02d:%02d:%02d", <аргументы>);

SetPropChar(<имя схемы>, <имя тренда>, "BeginTime", szBeginTime);

Он поймёт :).
Re: TlgOnlineTrendControl
Александр Родин, ООО "Нева Электрик"; 2.7.02

... да, спасибо... все заработало при подстановке строки...


теперь вот есть еще одна проблема... :)

Посредством ODK-шной функции TLGPressToolbarButton мы можем осуществить опосредованное нажатие любой тулбарной кнопки. В частности вызвать линейку (инструмент весьма удобный и нужный). Вызов организован с экранной кнопки по нажатию определенного хоткея, работа мышью исключается (работа происходит с SIMATIC PC FI45, где работа мышью весьма нежелательна, потому как расположение вертикально и "руки затекают" - фраза заказчика :). Вызов обеспечили - линейка вывелась, стрелками можем линейку по экрану двигать. Но закрыть ее обратно по тому же хоткею уже не получается... да и другие кнопки тоже не в фокусе, поэтому их хоткеи тоже не срабатывают. Хорошо, прописываем в скрипте кнопки Set_Focus на нее саму же, чтобы не терять с ней связь. Но тогда вызванную линейку двигать стрелочками уже не получается... %) Ну и чего теперь делать ?..

Заранее спасибо.
Re: TlgOnlineTrendControl
Александр Родин, ООО "Нева Электрик"; 17.7.02

... продолжу мучать глупыми вопросами... :)


Через все ту же функцию TLGPressToolbarButton можно включить инструмент "линза". Включается. Но вот установка области увеличения может быть выполнена только посредством мыши. А как сделать выделение области с помощью клавиатуры ???
Re: TlgOnlineTrendControl
Александр Родин, ООО "Нева Электрик"; 13.8.02

Сам себе отвечу... :)

По поводу линейки.
Если фокус установить не на кнопку, а на окно с графиками, то можно и двигать линейку, и обработать кнопку, которая этот инструмент закроет...

А вот по поводу линзы идей нет... пока... Может кто-нить что-нить подсоветует ?.. %)

Заранее спасибо.