Autor Beitrag
ayo
Hält's aus hier
Beiträge: 1



BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add('Haha');
Sleep(1000);//hier soll die zeitunbegrenzte pause hin
Memo1.Lines.Add('Huhu');
end;



danke, ayo!

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
TomWest
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
//Beendet das Programm mit ENTER, also bitte Aktion definieren 
if Key=VK_Return then 
   Begin
     close;
   end;

// Beendet das Programm mit ESC. Das ist ja mal was!
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 user profile iconraziel: Delphi-Tags hinzugefügt.
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Do 10.03.05 21:21 
@Phobeus: Ein einfacher Keyboard hook wäre imho um längen sauberer als ein Thread.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Sa 12.03.05 19:03 
user profile iconBenBE 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 12.03.05 20:01 
Dann geht's am besten Event-basiert:

Button.OnClick:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
If Button.Tag = 0 Then 
Begin
Memo1.Lines.Add('Haha');
Button.Tag := 1;
end;


Form.OnKeyPress:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: So 13.03.05 02:08 
Das onkey event ist extrem unzuverlässig.
Deswegen keyboardhook, wie ich bereits schrieb.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 13.03.05 02:27 
user profile iconKarlson 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!