| Autor |
Beitrag |
ayo
Hält's aus hier
Beiträge: 1
|
Verfasst: Mi 09.03.05 18:34
Hallo,
ich habe das Problem das ich mein Programm Zeitunbeschränkt pausieren muss. Habe es jetzt Zeitlich mit Sleep aber das "Kacke"!
Das Programm soll weiter laufen, nachdem die Enter Taste gedrückt wurde!
Kann mir da einer helfen?
simples beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Haha'); Sleep(1000);Memo1.Lines.Add('Huhu'); end; |
danke, ayo!
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
TomWest
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 10.03.05 19:29
Bin neu hier, aber vielleicht hilft dass weiter...
Aus der Delphi Hilfe mit einem Keydownereignis
(geändert) reagierst Du zumindestens auf ein
ENTER:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_Return then Begin close; end;
If Key=VKEscape then close; end; |
(Nicht getestet, müßte aber klappen).
Äh, hilft da nicht eine Message, die der Anwender
mit Enter bestätigt?????
Showmessage('ENTER'); ?????
Beste Grüße...
Moderiert von raziel: Delphi-Tags hinzugefügt.
|
|
Phobeus
      
Beiträge: 1280
Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
|
Verfasst: Do 10.03.05 20:46
Generell ist eine solche Lösung nur sinnvoll über Thread zu lösen. Während im Verarbeitungsthread dein Vorgang abläuft wird nach jedem Schritt geprüft, ob evtl. der Anwender im Hauptthread diesen pausiert. Wenn ja, wird keine Verarbeitung durchgeführt, ansonsten läuft diese wieder weiter (bis das Ergebnis z.B. vorliegt). Ein solches Bremsen macht meistens ja am meisten Sinn, da wenn man tausende von Anweisungen abarbeiten nicht immer einen sofortigen Abbruch wünscht, sondern z.B: erst wenn das aktuelle Ergebnis eines Durchganges vorliegt. In jedem Fall solltest Du Dir Thread ansehen...
_________________ "Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Do 10.03.05 21:21
@Phobeus: Ein einfacher Keyboard hook wäre imho um längen sauberer als ein Thread.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 11.03.05 09:14
Einfacher wäre aber zu erfahrn, wann er fortsetzen soll.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Sa 12.03.05 19:03
BenBE hat folgendes geschrieben: | | Einfacher wäre aber zu erfahrn, wann er fortsetzen soll. |
Wenn der User die Enter Taste drückt.
Schrieb er im ersten post...
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 12.03.05 20:01
Dann geht's am besten Event-basiert:
Button.OnClick:
Delphi-Quelltext 1: 2: 3: 4: 5:
| If Button.Tag = 0 Then Begin Memo1.Lines.Add('Haha'); Button.Tag := 1; end; |
Form.OnKeyPress:
Delphi-Quelltext 1: 2: 3: 4: 5:
| If (Key = #13) and (Button.Tag = 1) Then Begin Memo1.Lines.Add('Huhu'); Button.Tag := 0; end; |
Auf der Form sollte dazu KeyPreview auf True stehen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: So 13.03.05 02:08
Das onkey event ist extrem unzuverlässig.
Deswegen keyboardhook, wie ich bereits schrieb.
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 13.03.05 02:27
Karlson hat folgendes geschrieben: | | Das onkey event ist extrem unzuverlässig. |
Ist mir noch nie aufgefallen. Wenn Form1.KeyPreview auf true ist, sollte es keine Schwierigkeiten geben!
|
|