请教:线程问题,定时改变shape颜色,实现闪烁效果。 点击button1后调用一个线程每隔0.5ms改变shape1的颜色,来实现闪烁效果,在点击button2后关闭线程。分不多,请各位大侠帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样的,我动态创建了36个shape,用来当指示灯1~36。另有一个ComboBox1,String的值对应为1~36,如果ComboBox1的Text值为N(N介于1~36之间),则第N个shape闪烁,就是每隔一段时间(例如0.5ms)切换Brush的颜色,同时不影响其它操作,如果点击确定按钮后则该shape的颜色固定为红色。最原先想用两个timer,分别控制延时,然后在ComboBox的change事件里面判断当前的值,然后把Timer1的Enabled属性设为True。主要问题是这样的:在点击comoBox的下拉菜单后,先随便选个值,则对应shape闪烁,然后再随便选个值(注意:两次选值时ComboBox的下拉菜单要一直打开),当前被选中的值对应的shape也闪烁。问题来了:第一个shape可能还是红色的,我怎么把它擦掉。简单点说就是我现在不知道onchange事件怎么写才能保证当前选择的shape闪烁而原先的哪个不为红色。下面的是两个timer的,开始Enabled属性都为False;哪位高人指点一下change事件该怎么写?不用线程也可以。procedure TParaAddForm.Timer1Timer(Sender: TObject);var I,J: Integer;begin //**************************红色********************// I:=ComboBox10.ItemIndex; J:=StrToInt(ComboBox10.Items.Strings[I]); lgtShp[J].Brush.Color:=clMaroon; Timer1.Enabled:=False; Timer2.Enabled:=True;end;procedure TParaAddForm.Timer2Timer(Sender: TObject);var I,J: Integer;begin //**************************灰色********************// I:=ComboBox10.ItemIndex; J:=StrToInt(ComboBox10.Items.Strings[I]); lgtShp[J].Brush.Color:=clBtnface; Timer2.Enabled:=False; Timer1.Enabled:=True;end; 用一个TIMER就可闪烁了;判断下当前颜色; outer2000(天外流星),虽然没有给出我想要的,但是你第二次回复到是点醒了我,让我少用了一个timer,优化了代码,目前问题已经搞定,谢谢。另外也感谢chinaok朋友。 数据库插入问题 关于'字符串与数据库中某字段中所有的值进行比较'的问题? 100分请教原因, 二进制文件写的问题? DELPHI开发COM组件问题,求高手 诚问:几个delphi的初级问题 系统等待时间过长,怎么办? 请问如何做一个论坛发贴机 如何给好几个控件共用的事件里的变量赋值? 动态创建TClientSocket后的问题! DELPHI连接access数据库问题! Field为datetime或smalldatetime类型时,在DBEdit中输入10:20后,失去焦点,就会变成1899-12-30 10:20:00,要得到10:10格式的时间,怎么
procedure TParaAddForm.Timer1Timer(Sender: TObject);
var
I,J: Integer;
begin
//**************************红色********************//
I:=ComboBox10.ItemIndex;
J:=StrToInt(ComboBox10.Items.Strings[I]);
lgtShp[J].Brush.Color:=clMaroon;
Timer1.Enabled:=False;
Timer2.Enabled:=True;
end;procedure TParaAddForm.Timer2Timer(Sender: TObject);
var
I,J: Integer;
begin
//**************************灰色********************//
I:=ComboBox10.ItemIndex;
J:=StrToInt(ComboBox10.Items.Strings[I]);
lgtShp[J].Brush.Color:=clBtnface;
Timer2.Enabled:=False;
Timer1.Enabled:=True;
end;