Autor Beitrag
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Di 22.06.04 12:25 
Hallo!

Ich schreibe gerade ein Programm mit persönlichen Daten, das permanent laufen muss. Aufgabe ist es, das Programm mit einem Passwortdialog zu versehen, der sich automatisch einblendet, wenn das Programm länger als x Sekunden nicht benutzt wurde. (Der letzte Benutzer könnte ja vergessen, sich abzumelden.)

Meine Idee ist das ganze, über Application.OnIdle laufen zu lassen. Funktioniert das so?
Wie löst man dieses Problem generell? Ich muss doch auch Messages abfangen, wenn z.B. ein Popup-Menü eingeblendet wird usw... denn es wird dann ja gerade benutzt.

Bisher habe ich es mit einem TTimer probiert, der immer wieder hochgesetzt wird, wenn eine Prozedur ausgeführt wurde. Ziemlich umständlich...

Gruß
freedy
BeniSchindler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win 2k / suse9.1
D7 Prof / Kylix 3
BeitragVerfasst: Di 22.06.04 17:19 
OnIdl ist schon mal gar nicht so blöd.
Ich habs mir selber mal kurz angeschaut und würde folgendes Vorschlagen:

Man benutzt ein kombination aus Application.OnIdl, Application.OnMessage und einem TTimer.
Wenn man die Hilfe zu diesen Ereignissen durchliest, bemerkt man, dass man eventuell starke
Probleme mit der Performenz bekommen könnte, wenn man sich blöd anstellt. Und ich weiss nicht,
ob ich nicht genau das bei meiner Variante tue :roll:

OnIdlEvent:
Startet den Timer;
Setzt das OnMessage Event der Application auf unsere OnMessage Methode;

OnMessageEvent:
Stopt den Timer;
Setzt das OnMessage Event der Application auf nil;

OnTimerEvent:
Stopt den Timer;
Setzt das OnMessage Event der Application auf nil;
Sperrt die Anwendung;

Damit müsste es eigentlich klappen.

Man kann im OnMessageEvent natürlich auch eine Abfrage einbauen, das der Timer blos bei Mausklicks und Tastaturanschlägen ausgeht. Und nicht auch bei jeder anderen Message wie Mausbewegungen und Befehlen. Aber damit kannstes ja mal probieren und spielen. :)

_________________
Result := 42; Application.ProcessMessages;
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 22.06.04 17:19 
Hallo,

ja ich habe sowas mal über onIdle gesehen. On Idle wird soweit ich weiß nur ausgelöst, wenn wirklich nichts gemacht wird.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Di 22.06.04 18:32 
es gibt auch sowas wie systemidla. ich meine da mal was bei www.swissdelphicenter.ch gesehen zu haben !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
freedy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Di 22.06.04 19:00 
Super. Erstmal danke für die Hinweise. Ich werd's mal ausprobieren und wenn's klappt den Code hier posten. Vielleicht interessiert sich ja noch jemand dafür.

Gruß
freedy
freedy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 23.06.04 14:39 
Hallo,

hier mein Testprogramm. Vielleicht kann ja mal jemand drüberschauen und Verbesserungsvorschläge machen.

[url=www.nakapella.de/pub...rammsperre.zip[/url]

Gruß
freedy