procedure THIGate._work_doFlip;
begin
Fstate := not FState;
end;
------------ Дoбавленo:
Ни фига он не инициирует состояние, так как в Create свойства еще не считаны. Провеь State всегда равен нулю. Короче, я изменил код
unit hiGate;
interface
uses Kol,Share,Debug;
type
THIGate = class(TDebug)
private
FState:boolean;
RunOnce:boolean;
public
_prop_State:byte;
_event_onGate:THI_Event;
constructor Create;
procedure _work_doGate(var _Data:TData; Index:word);
procedure _work_doFlip(var _Data:TData; Index:word);
procedure _work_doState(var Data:TData; Index:word);
end;
implementation
constructor THIGate.Create;
begin
RunOnce := true;
inherited;
end;
procedure THIGate._work_doGate;
var dt:TData;
begin
dt := _Data;
if RunOnce then begin
Fstate := not boolean(_prop_State);
RunOnce := false;
end;
if FState then _hi_CreateEvent(_Data,@_event_onGate,Dt);
end;
procedure THIGate._work_doState;
begin
RunOnce := false;
FState := ReadBool(Data);
end;
procedure THIGate._work_doFlip;
begin
if RunOnce then begin
Fstate := not boolean(_prop_State);
RunOnce := false;
end;
Fstate := not FState;
end;
end.
doFlip пришлось подправить, тк он может быть активирован раньше doGate.