讓程式暫停當按了 ENTER 又繼續 |
答題得分者是:careychen
|
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
||
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ToBreak : Boolean; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ToBreak := False; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If Key = Vk_Return Then Begin Form1.Enabled := True; ToBreak := True; end; end; procedure TForm1.FormActivate(Sender: TObject); begin while True Do Begin Application.ProcessMessages; Form1.Enabled := False; If ToBreak Then Begin Form1.Enabled := True; Break; end; end; end; end. object Form1: TForm1 Left = 192 Top = 107 Width = 544 Height = 375 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] // 記得要設定 OldCreateOrder = False OnActivate = FormActivate OnCreate = FormCreate OnKeyDown = FormKeyDown PixelsPerInch = 96 TextHeight = 13 end
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-07-30 20:56:22, 註解 無‧
|
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
你的語意非常不明確
1.暫停? 是在程式運作中任地方可以暫停, 還是運行到那一個地方要暫停/ 2.暫停不會像當機, 是暫停什麼東西, 是暫停所有的運作, 一直到按下enter, 還是其他事照作, 但某些東東暫停? 3.請說清楚你的想法, 謝謝! ===================引 用 nokia2005 文 章=================== 有無任何方法能讓程式 "暫停" 而畫面不會像當機一樣 而當我再按 ENTER 時又能繼續讓程式繼續運作呢 因我找了很多文章但還是不明白要怎麼做 謝謝 |
|
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
||
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
後來說清楚後,跟一開始問的似乎不一樣,那你可以修改 pceys 大的程式一下就行了
[code delphi] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ToBreak: Boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin // 這個的目的是不要讓你的 Focus 在 Button 上, // 以免測試一直按下 Enter 時卻一直進入本 Function Memo1.SetFocus; ToBreak := True; Memo1.Lines.Add('First Procedure'); while ToBreak Do Application.ProcessMessages; ToBreak := True; Memo1.Lines.Add('Second Procedure'); while ToBreak Do Application.ProcessMessages; ToBreak := True; Memo1.Lines.Add('Third Procedure'); while ToBreak Do Application.ProcessMessages; ToBreak := True; Memo1.Lines.Add('Fourth Procedure'); while ToBreak Do Application.ProcessMessages; ToBreak := True; Memo1.Lines.Add('Fifth Procedure'); while ToBreak Do Application.ProcessMessages; Memo1.Lines.Add('Procedure End!!'); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If Key = Vk_Return Then Begin ToBreak := False; end; end; end. [/code] ※注意, Form 的屬性 KeyPreview 要設成 True 哦 建議 Nokia2005 大,學程式是學邏輯和觀念而不是【只學程式】, pceyes 大回答的其實夠解決您的問題 有時試著去變化程式碼的位置,出現的效果也不一樣哦!! 加油~~ ===================引 用 nokia2005 文 章=================== 感謝 pceyes 前輩的指導但它一開始跑就會停止了 ~~~~~ 我目前是做了一個按鈕它內部有五個PROCEDURE 我希望當它程式執行到第二個PROCEDURE時它就會自動停止當我再按了ENTER時它又開始從第三個PROCEDURE開個跑 SORRY一開始沒有說明清楚 謝謝
------
價值的展現,來自於你用哪一個角度來看待它!! |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
那這簡單啦!
原pceyes的這段程式仍保留
在每一個procedure的最後寫(或者在BUTTON1中呼叫PROCEDURE1結束後的下一行寫, 同時PROCEDURE2也是) while True do begin Application.ProcessMessages; if ToBreak then break; end; 如果你不想讓使用者誤以為當機, 在 while 中加一個label顯示在form11, 告知程式暫停 或者根本上述程式都不要做, 只要在每一個procedure 的結束點加入 Application.MessageBox('程式暫停','警告',MB_OK) 接下來PROCEDURE1 如何執行 PROCEURE2 這應該是最基本的呼叫方式, 就不說了 ===================引 用 nokia2005 文 章=================== 感謝 pceyes 前輩的指導但它一開始跑就會停止了 ~~~~~ 我目前是做了一個按鈕它內部有五個PROCEDURE 我希望當它程式執行到第二個PROCEDURE時它就會自動停止當我再按了ENTER時它又開始從第三個PROCEDURE開個跑 SORRY一開始沒有說明清楚 謝謝 |
|
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |