So hab ich das aber nicht gemeint:
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Counter := 30;
//die 30 kann sich ändern, daher müsste ich jedesmal aus der DB lesen.
end;
procedure TForm1.AutoAbmeldenTimer(Sender: TObject);
begin
for i := 0
to Counter
do
begin
..
Counter -1;
end;
Abmelden.Click;
end;
Der Counter kann eine Variable deines Forms sein - nicht Global.
Was soll die Schleife ?
Delphi-Quellcode:
type
TForm1 =
class(TForm)
...
FCounter: integer;
FCounterStart: integer;
...
end;
procedure TForm1.OnCreate (Sender:TObject);
begin
FCounterStart := AusDBGelesen;
FCounter := FCounterStart;
end;
procedure TForm1.Anmelden;
begin
FCounterStart := AusDBGelesen;
// auch hier möglich und sinnvoll.
FCounter := FCounterStart;
end;
procedure TForm1.OnMouseMove(...);
begin
FCounter := FCounterStart;
end;
procedure TForm1.AutoAbmeldenTimer(Sender:tObject);
begin
if FCounter > 0
then
begin
dec(FCounter);
if FCounter = 0
then
Abmelden;
end;
end;
Ich verwende in meinen Programmen gerne Actionlists. Hier kann man prima ein OnAction Event programmieren, bei dem man den FCounter wieder auf FCounterStart zurücksetzt. Da braucht man keinen Hook, kein OnMouseMove oder onKeypress. Man kann natürlich auch alle drei verwenden um den FCounter zu retriggern.
Gruss