首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

,关于时间的有关问题!

2012-02-13 
请教高手,关于时间的问题!!!我现在有一个按钮,我想点击一次后就把它禁掉,然后1小时后在让它起作用!!请高手

请教高手,关于时间的问题!!!
我现在有一个按钮,我想点击一次后就把它禁掉,然后1小时后在让它起作用!!
请高手指点一下,小弟十分感激!!!!
最好把代码写具体点,我是刚从VB转学Delphi的


[解决办法]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Enabled:=false;
self.Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Enabled:=true;
self.Timer1.Enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
self.Timer1.Interval:=1000*60*60;
self.Timer1.Enabled:=false;
end;

end.

[解决办法]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button2.Enabled := True;
Timer1.Enabled := False;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := True;
Button2.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 3600000;
Timer1.Enabled := Flase;
end;
[解决办法]
如果不是用在程序的流程控制上,
别人可以使用 灰色按钮克星 等工具把禁用的按钮变成可用
因此在禁用按钮后,不要忘记改变按钮指向的程序流程。
[解决办法]
TO 楼上: 那象下面这样, 会不会被灰色按钮克星解掉.(我没用过灰色按钮克星, 所以不知道)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Enabled := True;
Button1.OnClick := Button1Click;
Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
Button1.OnClick := nil;
Button1.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 3600000;
Timer1.Enabled := False;
end;
[解决办法]
lihuasoft的方法比较好。其实操作的方法和vb中差不多,都是用timer控件的enable属性就可以了,很简单。
[解决办法]
To lihuasoft(两颗星)
我刚刚测试了,
灰色按钮克星 确实可以使得 Disable的按钮变为 Enable (不论是VB的程序还是Delphi的,估计VC的都可以,因为解决方法可能来自Windows API)
但是只要流程的指向发生变化(Button1.OnClick := nil;原来指向处理函数的入口,现在改为空),
这种变化是没有办法恢复的,因此也没有办法有针对性的解除。

[解决办法]
private
procedure EnableClick(Sender: TObject);
procedure DisableClick(Sender: TObject);


procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Enabled:=false;
self.Timer1.Enabled:=true;
button1.onclick:=DisableClick;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Enabled:=true;
self.Timer1.Enabled:=false;
button1.onclick:=EnableClick;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
self.Timer1.Interval:=1000*60*60;
self.Timer1.Enabled:=false;


button1.onclick:=EnableClick;
end;


................

热点排行