怎样实现windows扫雷中按钮被按下的效果!! 在扫雷时在数字上同时按下鼠标左右键,周围的按钮会呈现被按下的效果!放开鼠标后又会起来!问? 该用什么样的按钮,怎么实现的!回答经试验通过既给全分!! upupup 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用快速按钮 speedbutton 或是工具栏。 能说具体点吗! 比如:怎样实现在lable1上同时按下鼠标左右键时将button1和button2呈现被按下的效果,放开鼠标后又会起来! 好的! 谢了![email protected] 收到了!谢谢 不过你的很复杂哦! 你的button都是自己画的啊!现在我的扫雷的基本功能都实现了,就差这个了(呈现被按下的效果)请告诉我一个简单方法!比如:怎样实现在lable1上同时按下鼠标左右键时将 按钮1 和 按钮2 呈现被按下的效果,放开鼠标后又会起来! 可以使用TDRAWGRID来做这样的效果,在用户同时使用鼠标左右键同时按下时,同时绘制当前单元格和当前单元格周边单元格。 用快速按钮 speedbutton 或是工具栏要占用相当的内存。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, TFlatSpeedButtonUnit;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure MyClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; MyButton: TSpeedButton;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);var i, j: Integer;begin for i:=0 to 9 do begin for j:= 0 to 9 do begin MyButton:= TSpeedButton.Create(self); MyButton.Parent:= Form1; MyButton.Name:= 'Button'+IntToStr(i)+IntToStr(j); MyButton.Height:= 20; MyButton.Width:= 20; MyButton.Left:= i * 20; MyButton.Top:= j * 20; MyButton.GroupIndex:= 0;//i*10+j+1; MyButton.OnClick:= MyClick; end; end;end;procedure TForm1.MyClick(Sender: TObject);begin if not TSpeedButton(Sender).Down then begin //TSpeedButton(Sender).Down:= true; TSpeedButton(Sender).Flat:=true; end;end;procedure TForm1.FormDestroy(Sender: TObject);begin MyButton.Free;end;procedure TForm1.FormPaint(Sender: TObject);var i: integer;begin for i:= 0 to 10 do begin Canvas.Pen.Color:= $008396A0; Canvas.MoveTo( i*Mybutton.Width , 0); Canvas.LineTo( i*Mybutton.Width , 10*Mybutton.Height); Canvas.MoveTo( 0 , i*Mybutton.Width); Canvas.LineTo( 10*Mybutton.Height , i*Mybutton.Width); end;end;end. 问题差不多解决! 即刻就揭帖! 再次感谢大家!特别是 pankun(剑神一笑 ^_^) , joky1981() 还有点问题! 按钮按下之后speedbutton相当于消失了!后面的雷就被看到了! 呵呵! 怎么解决啊! 我的button都是自己画的吗?呵呵我不记得了! delphi的teechart组件那里面在tchart上设置series组件怎么不能编程了啊? 用fastreport中的条码控件打印,结果不一样 关于工作 关于汉字内码的问题,高手请帮忙,Help Me!!!!! CORBA高高手请进:如何实现Java与Delphi的CORBA互联? 一个简单问题!在线等待! access数据库这个查询语句该怎么写呢? 用NMUDP控件在局域网中进行文件的传输? 怎么使窗口最大化时不会占满整个屏幕,而是我指定的大小? 怎样读取网上的 文件? 为什么我申明这个变量类型会出错呢? var ddd:IHTMLDocument2; ’超时已过期‘问题的解决????
比如:怎样实现在lable1上同时按下鼠标左右键时将button1和button2呈现被按下的效果,放开鼠标后又会起来!
[email protected]
现在我的扫雷的基本功能都实现了,就差这个了(呈现被按下的效果)请告诉我一个简单方法!
比如:怎样实现在lable1上同时按下鼠标左右键时将 按钮1 和 按钮2 呈现被按下的效果,放开鼠标后又会起来!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, TFlatSpeedButtonUnit;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure MyClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
MyButton: TSpeedButton;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
i, j: Integer;
begin
for i:=0 to 9 do
begin
for j:= 0 to 9 do
begin
MyButton:= TSpeedButton.Create(self);
MyButton.Parent:= Form1;
MyButton.Name:= 'Button'+IntToStr(i)+IntToStr(j);
MyButton.Height:= 20;
MyButton.Width:= 20;
MyButton.Left:= i * 20;
MyButton.Top:= j * 20;
MyButton.GroupIndex:= 0;//i*10+j+1;
MyButton.OnClick:= MyClick;
end;
end;
end;procedure TForm1.MyClick(Sender: TObject);
begin
if not TSpeedButton(Sender).Down then
begin
//TSpeedButton(Sender).Down:= true;
TSpeedButton(Sender).Flat:=true;
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
MyButton.Free;
end;procedure TForm1.FormPaint(Sender: TObject);
var
i: integer;
begin
for i:= 0 to 10 do
begin
Canvas.Pen.Color:= $008396A0;
Canvas.MoveTo( i*Mybutton.Width , 0);
Canvas.LineTo( i*Mybutton.Width , 10*Mybutton.Height);
Canvas.MoveTo( 0 , i*Mybutton.Width);
Canvas.LineTo( 10*Mybutton.Height , i*Mybutton.Width);
end;
end;end.
呵呵我不记得了!