请教高手,关于时间的问题!!!
我现在有一个按钮,我想点击一次后就把它禁掉,然后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;
................