Вверх ↑
Пакеты 
Hion
WebApp 
Компоненты - Инструменты

Инструменты
Описание
   Элементы данной вкладки достаточно стандартны и присутствуют практически во всех пакетах, сделанных для HiAsm.

   Элементу MathParse посвящена отдельная статья Математические выражения в Hion, т.к. работа с ним достаточно разнообразна и в некоторых случаях не очевидна.
GlobalVar
   Элемент с аналогичным названием обычно используется в схемах для создания глобальных переменных, доступных без протягивания связей на любом уровне вложенности контейнеров. Однако в пакете WebApp он обладает дополнительной функциональностью - возможностью сохранять данные между запусками приложения.

   Включается эта опция при установке свойства Save=true. При данном свойстве всякий раз после вызова метода doValue новое значение глобальной переменной будет сохранено в LocalStorage браузера (это глобальное хранилище данных относительно небольшого объема, которое выделяется браузером каждому сайту отдельно и сохраняется после его закрытия). Поскольку данные хранятся браузером на компьютере пользователя, то они не могут быть доступны для того же приложения с любых других компьютеров. В примере ниже наглядно показана эта функциональность:

Add(Edit,2,217,35)
{
Left=196
Top=91
Width=#2:92|
Height=#2:28|
}
Add(Button,3,140,84)
{
Left=119
Top=84
Width=#2:59|
Height=#2:42|
Caption=#4:Save|
link(onClick,5:doData,[])
}
Add(GlobalVar,4,273,84)
{
Name=#4:test|
Save=1
}
Add(DoData,5,217,84)
{
link(onEventData,4:doValue,[])
link(Data,2:Text,[])
}
Add(Button,6,140,168)
{
Left=119
Top=133
Width=#2:59|
Height=#2:42|
Caption=#4:Load|
link(onClick,7:doText,[])
}
Add(Edit,7,217,168)
{
Left=196
Top=140
Width=#2:92|
Height=#2:28|
link(Str,8:Var,[])
}
Add(GlobalVar,8,217,133)
{
Name=#4:test|
}

  После того, как переменная была однажды сохранена, можно закрыть приложение, открыть его заново и нажав кнопку Load увидеть, что значение переменной было восстановлено на сохраненное ранее.
Кабели
   Кабели, появившиеся впервые в пакете Windows, является хорошим и мощным инструментом для сокращения количества связей в схеме и ее оптимизации при прокладывании событий в контейнеры.



   На картинке выше изображен основной принцип работы кабеля. Разберем же его подробнее. Любой кабель обязательно состоит из минимум двух частей: источника (левая часть на картинке) и приемника (правая часть). При этом при вызове любого метода источника e1, e2 или e3 сигнал передается по кабелю cable и вызывает одно из событий e1, e2 или e3 у приемника. Вместе с сигналом передаются данные из потока, т.ч. заботится об их сохранении нет смысла.

Add(CableWork,19,287,245)
{
Wire=#2:e1|2:e2|2:e3|
PInfo(onCable,1,cable)
link(onCable,20:doCable,[])
}
Add(CableEvent,20,371,245)
{
Wire=#2:e1|2:e2|2:e3|
PInfo(e1,1,e1)
PInfo(e2,1,e2)
PInfo(e3,1,\ne3)
link(e1,24:doCaption,[(409,251)(409,223)])
link(e2,25:doCaption,[])
link(e3,26:doCaption,[(409,265)(409,293)])
}
Add(Button,21,203,217)
{
Left=56
Top=63
Caption=#2:e1|
Data=String(e1)
PInfo(onClick,1,e1)
link(onClick,19:e1,[(247,223)(247,251)])
}
Add(Button,22,203,252)
{
Left=56
Top=98
Caption=#2:e2|
Data=String(e2)
PInfo(onClick,1,e2)
link(onClick,19:e2,[])
}
Add(Button,23,203,287)
{
Left=56
Top=133
Caption=#2:e3|
Data=String(e3)
PInfo(onClick,1,\ne3)
link(onClick,19:e3,[(247,293)(247,265)])
}
Add(Label,24,434,217)
{
Left=245
Top=70
}
Add(Label,25,434,252)
{
Left=245
Top=112
}
Add(Label,26,434,287)
{
Left=245
Top=147
}

   Поскольку кабель (связь с подписью cable) является обычной связью, то с ней можно делать все тоже самое, что и со всеми другими связями: ставить Hub, сохранять данные в Memory, пропускать связи в контейнеры и т.д.

   В примере ниже показано, как правильно сериализовать данные кабеля в простую строку, которую можно сохранять или передавать по сети в другое приложение.

Add(CableWork,10,294,63)
{
Wire=#1:t|
link(onCable,17:doConvert,[])
}
Add(Button,11,119,63)
{
Left=49
Top=49
Width=#2:73|
Height=#2:42|
Caption=#4:Send|
Data=String(test)
link(onClick,15:doEvent1,[])
}
Add(Label,12,343,140)
{
Left=147
Top=63
}
Add(CableEvent,13,294,140)
{
Wire=#1:t|
link(t,12:doCaption,[])
}
Add(Hub,15,175,63)
{
link(onEvent1,10:t,[])
link(onEvent2,18:doConvert,[(211,76)(211,146)])
}
Add(JSON,17,343,63)
{
Mode=1
}
Add(JSON,18,238,140)
{
PInfo(Data,1,string)
link(onConvert,13:doCable,[])
link(Data,17:Result,[(244,118)(349,118)])
}

   Связь с названием "string" лишь символизирует передачу строки с данными кабели, в реальных схемах вместо связи может быть сохранение данных в браузере, передача по сети, загрузка из файла и т.д. и т.п.
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)
Комментарий
...