Вверх ↑
Ответов: 3514
Рейтинг: 184
#1: 2009-01-17 12:30:50 ЛС | профиль | цитата
Sniper36, на вот:
hicase.pas:
unit hiCase;
interface

uses Kol,Share,If_arg,Debug;

type
THICase = class(TDebug)
private
FData:TData;
GData:TData;
public
_prop_Value:TData;
_event_onTrue:THI_Event;
_event_onFalse:THI_Event;

property _prop_DataOnTrue:TData write FData;
property _prop_DataOnFalse:TData write GData;
procedure _work_doCase(var _Data:TData; Index:word);
procedure _work_doDataOnTrue(var _Data:TData; Index:word);
procedure _work_doDataOnFalse(var _Data:TData; Index:word);
end;

implementation

procedure THICase._work_doCase;
var dt:TData;
begin
dt := _Data;
if Compare(ReadFromThread(_Data),_prop_Value,0) then
_hi_OnEvent_(_event_onTrue, FData)
else
_hi_OnEvent(_event_onFalse, GData);
end;

procedure THICase._work_doDataOnTrue; begin FData:= _Data; end;
procedure THICase._work_doDataOnFalse; begin GData:= _Data; end;

end.
case.ini:
[About]Version=1.111
Author=HiAsm

[Type]
Class=Element
Info=Организация цепи событий сравнения с выдачей в поток заранее определенных данных
Tab=Tools

[Property]
+Value=Задаёт константу сравнения|3|
@DataOnTrue=Определяет данные для состояния True|3|
@DataOnFalse=Определяет данные для состояния False|3|

[Methods]
doCase=Производит сравнение значения из потока с параметром-константой Value. В случае равенства этих значений вызывается событие onTrue иначе onNextCase с копией входных данных. onNextCase - обычно связывается со следующим каскадом Case|1|
onTrue=Событие происходит всякий раз при равенстве значения из потока значению параметра Value и выдает в поток данные из ячейки DataOnTrue|2|
onFalse=Событие происходит всякий раз при НЕ равенстве значения из потока значению параметра Value и выдает в поток данные из ячейки DataOnFalse|2|

Пример:
Add(Case,3700304,322,105){
Value=Integer(1)
DataOnTrue=String(равно)
DataOnFalse=String(не равно)
link(onTrue,3623112:doWork2,[])
link(onFalse,3623112:doWork3,[(368,118)])
}
Add(Button,4454438,161,105)
{
Left=210
Top=105
Data=Integer(1)
Point(doCaption)
link(onClick,12402843:doRandom,[])
}
Add(Memo,4190696,392,105)
{
Left=300
Top=105
}
Add(HubEx,3623112,364,98)
{
link(onEvent,4190696:doAdd,[])
}
Add(Random,12402843,210,105)
{
Max=1
link(onRandom,4276988:doEvent1,[])
}
Add(Hub,4276988,273,105)
{
link(onEvent1,3700304:doCase,[])
link(onEvent2,4454438:doCaption,[(300,118)(300,98)(149,98)(149,111)])
}

Советую ставить, как отдельный элемент..

/обновлено, маленькие правки/
карма: 0
0