怎样实现windows扫雷中按钮被按下的效果!!

hmzgz81 2003-10-18 09:55:21
在扫雷时在数字上同时按下鼠标左右键,周围的按钮会呈现被按下的效果!放开鼠标后又会起来!问? 该用什么样的按钮,怎么实现的!

回答经试验通过既给全分!! upupup
...全文
104 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pankun 2003-10-18
  • 打赏
  • 举报
回复
发了,请查收.
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
好的! 谢了!
gaohm810820@yahoo.com.cn
pankun 2003-10-18
  • 打赏
  • 举报
回复
我做了一个扫雷,要源码就留信箱.
不过是N久以前做的,做的不好看..~
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
能说具体点吗!
比如:怎样实现在lable1上同时按下鼠标左右键时将button1和button2呈现被按下的效果,放开鼠标后又会起来!
sixgj 2003-10-18
  • 打赏
  • 举报
回复
用快速按钮 speedbutton 或是工具栏。
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
呵呵! 我也没仔细研究你的做法! 再看吧!
pankun 2003-10-18
  • 打赏
  • 举报
回复
我的button都是自己画的吗?
呵呵我不记得了!
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
还有点问题! 按钮按下之后speedbutton相当于消失了!后面的雷就被看到了! 呵呵! 怎么解决啊!
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
问题差不多解决! 即刻就揭帖! 再次感谢大家!特别是 pankun(剑神一笑 ^_^) , joky1981()
joky1981 2003-10-18
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
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.
diazo 2003-10-18
  • 打赏
  • 举报
回复
用快速按钮 speedbutton 或是工具栏要占用相当的内存。
diazo 2003-10-18
  • 打赏
  • 举报
回复
可以使用TDRAWGRID来做这样的效果,在用户同时使用鼠标左右键同时按下时,同时绘制当前单元格和当前单元格周边单元格。
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
不过! 我觉得你编的很不错哦!
hmzgz81 2003-10-18
  • 打赏
  • 举报
回复
收到了!谢谢 不过你的很复杂哦! 你的button都是自己画的啊!
现在我的扫雷的基本功能都实现了,就差这个了(呈现被按下的效果)请告诉我一个简单方法!
比如:怎样实现在lable1上同时按下鼠标左右键时将 按钮1 和 按钮2 呈现被按下的效果,放开鼠标后又会起来!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧