Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Инcтpумeнты 
Общие - EventFromData

EventFromData
Краткое описание
   Компонент предназначен для преобразования запроса данных в поток
Параметры
(не определены)
Методы
  • doData - Запоминает данные из потока
  • События
  • onEvent - Событие происходит всякий раз перед обращением к точке данных GetData
  • Свойства
  • GetData - Содержит данные, сохраненные методом doData
  • Данные
  • Data - Определяет данные для сохранения в памяти
  • Примеры
       Пример демонстрирует построение схемы, в которой в математическом парсере используется своя собственная функция, прибавляющая к переданному аргументу случайное число.
    Add(MainForm,2953706,77,147)
    {
    Width=369
    Height=201
    Caption="EventFromData - math calc"
    }
    Add(Button,16113621,147,147)
    {
    Left=185
    Top=75
    Caption="calc"
    link(onClick,12530384:doCalc,[])
    }
    Add(EventFromData,15135087,203,84)
    {
    link(onEvent,10355874:doEvent1,[])
    }
    Add(Message,10861316,259,147)
    {
    }
    Add(MathParse,12530384,203,147)
    {
    DataCount=1
    MathStr="%1( 34*6 ) + 5"
    link(onResult,10861316:doMessage,[])
    link(X1,15135087:GetData,[])
    }
    Add(Random,10120891,301,35)
    {
    }
    Add(Hub,10355874,259,84)
    {
    link(onEvent1,10120891:doRandom,[(287,90)(287,41)])
    link(onEvent2,4648906:doOperation,[])
    }
    Add(Math,4648906,301,91)
    {
    link(onResult,15135087:doData,[(345,97)(345,28)(190,28)(190,90)])
    link(Op1,10120891:Random,[])
    }

       Пример ниже показывает, как переопределить точку Close у формы для запроса данных у пользователя
    Add(MainForm,2953706,364,154)
    {
    Width=369
    Height=201
    Caption="EventFromData - close form"
    Point(Close)
    link(Close,2196121:GetData,[])
    }
    Add(EventFromData,2196121,364,105)
    {
    link(onEvent,12212153:doMessage,[])
    }
    Add(Message,12212153,413,105)
    {
    Message="Quit?"
    Type=2
    link(onMessage,5400253:doCompare,[])
    }
    Add(If_else,5400253,462,105)
    {
    Op2=Integer(6)
    link(onTrue,6766141:doWork1,[])
    link(onFalse,6766141:doWork2,[])
    }
    Add(ChanelToIndex,6766141,511,105)
    {
    link(onIndex,2196121:doData,[(555,111)(555,99)(352,99)(352,111)])
    }
    Замечания
      Компонент EventFromData - работает следующим образом:
    • Начинается его работа с запроса данных через нижнюю точку GetData
    • Вызывается событие onEvent c данными, поступившими на точку GetData из потока снизу(если данных нет, то onEvent вызывается с пустыми данными)
    • Компонент ждет выполнение схемы, идущей после события onEvent
    • Затем необходимо записать в компонент данные, вызовом метода doData
    • Данные, записанные в компонент на предыдущем шаге возвращаются через точку GetData, запросившему их компоненту
      Применения у компонента два(по крайней мере найденных). Первое, это реализация своей ф-ции при вычисления выражения в математическом парсере, когда используется строка вида: %1( 34*6 ) + 5, тут результат вычисления 34*6 как раз и будет передан "вверх" на точку %1, так что при подключенном EventFromData они в итоге окажутся в соответствие с алгоритмом его работы на выходе события onEvent. Второе применение используется в ситуациях, когда компонент запрашивает какие-то данные, а они еще не готовы.

    Обновление элемента: [svn]EventFromData.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...