線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2313
推到 Plurk!
推到 Facebook!

利用Timer暫停350豪秒

尚未結案
yaoyao01tw
一般會員


發表:28
回覆:17
積分:9
註冊:2003-01-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-03 08:53:06 IP:61.58.xxx.xxx 未訂閱
各位前輩: 不知道要如何精確控制暫停時間,目前我的需求是一串文字 需要個別暫顯示字串內文字,也就是停止特定豪秒後顯示下一個字 目前採用的作法是A為顯示表單,B為暫停計算用表單 A會以ShowModel方式開啟B表單,然後在B表單中放置Timer元件 內計算暫停時間,然後透過下列程式碼計算時間差 Stop_Count := strtoint(inttostr(strtoint64(Now_time) - strtoint64(into_time))); // 計算進入時間千分之一秒 不知道這樣的做法是否正確,由無更好的作法否?
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-03 12:43:32 IP:61.219.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
    for i := 1 to 10 do
    begin
      form1.ListBox1.Items.Add(form1.Edit1.Text);
      form1.ListBox1.Items.Add(form1.Edit2.Text);
      Application.ProcessMessages;
      Sleep(1000);//暫停一秒
    end;
end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-03 12:48:16 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試將顯示特定字串的程式碼寫在Timer元件的OnTimer事件中﹐用其Interval屬性和Enabled屬性直接控制﹐Interval屬性代表触發OnTimer事件的間隔時間﹐單位為千分秒﹐即值1000為1秒﹒Enabled屬性控制是否触發﹐True值為触發﹐False值為不触發﹒這樣就可以不用通過計算時間的程式碼來控制顯示﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-05 12:21:28 IP:220.130.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Controls, StdCtrls, Classes, Forms;
type      TShowTextEvent = procedure(Sender: TObject; Text: string) of object;      TShowTextThread = class(TThread)
  protected
    FText: string;
    FInterval: Integer;
    FOnShowText: TShowTextEvent;
    procedure Execute; override;
  public
    constructor Create(Text: string; Interval: Integer);
    property OnShowText: TShowTextEvent read FOnShowText write FOnShowText;
  end;      TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    procedure DO_ShowText(Sender: TObject; Text: string);
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    { TShowTextThread }    constructor TShowTextThread.Create(Text: string; Interval: Integer);
begin
  inherited Create(True);
  FreeOnTerminate := True; 
  FText := Text;
  FInterval := Interval;
  Resume;
end;    procedure TShowTextThread.Execute;
var
  I, Timeout: Cardinal;
  S: string;
begin
  for I := 1 to Length(FText) do
  begin
    Timeout := GetTickCount   Cardinal(FInterval);
    while GetTickCount < Timeout do
      Application.ProcessMessages;
    if Assigned(FOnShowText) then
    begin
      S := Copy(FText, 1, I);
      FOnShowText(Self, S);
    end;
  end;
  Terminate;
end;    { TForm1 }    procedure TForm1.Button1Click(Sender: TObject);
begin
  with TShowTextThread.Create('0123456789', 350) do
    OnShowText := DO_ShowText;
end;    procedure TForm1.DO_ShowText(Sender: TObject; Text: string);
begin
  Label1.Caption := Text;
end;    end.    
xzhifei
一般會員


發表:0
回覆:1
積分:0
註冊:2006-07-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-07 17:03:24 IP:218.20.xxx.xxx 未訂閱
procedure Delay(dwMilliseconds: Longint);
var
iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop - iStart) >= dwMilliseconds;
end;
系統時間:2024-05-10 16:18:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!