Hallo,
um erstmal keinen Thread zu brauchen, ging auch das starten eines Timers, für jede Kabine getrennt.
Delphi-Quellcode:
function TTuer.schließen(...):bool;
...
begin
...
tuerSchließend:= true;
StarteTuerSchlieszTimer(100) ;
end;
procedure StarteTuerSchlieszTimer(deltaT:longint) ;
begin
TuerSchlieszTimer.interval := deltaT;
TuerSchlieszTimer.enabled := true;
end;
procedure TuerSchlieszTimer.OnTimer(....)
begin
IF TuerSchliessend then
begin
TuerPos := TuerPos - deltaTuerPos;
If TuerPos <= 0 then
begin
TuerPos := 0;
TuerSchliessend := false;
TuerSchlieszTimer.enabled := false; // Timer aus
end;
end
else
IF TuerOeffnend then
begin
TuerPos := TuerPos + deltaTuerPos;
If TuerPos >= TuerMaxPos then
begin
TuerPos := TuerMaxPos
....
end;
Gruß Horst