Delphi圆角边框按钮

时间:2014-06-30 14:48:04

标签: delphi lazarus

我正在为一个非常重要的项目开发游戏,我需要在我的表单中使用一些按钮。顺便说一句,这些按钮必须是圆形的。我的意思是:

enter image description here

图片展示了我在寻找什么。我在互联网上找到了这个程序,人们说它运作得很好:

procedure DrawRounded(Control: TWinControl) ;
var
   R: TRect;
   Rgn: HRGN;
begin
   with Control do
   begin
     R := ClientRect;
     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
     Perform(EM_GETRECT, 0, lParam(@r)) ;
     InflateRect(r, - 4, - 4) ;
     Perform(EM_SETRECTNP, 0, lParam(@r)) ;
     SetWindowRgn(Handle, rgn, True) ;
     Invalidate;
   end;
end; 

所以我写了这段代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
  //code for other stuff

  DrawRounded(Button1);
end; 

我现在正在使用Lazarus 1.2.4。顺便说一句,当我要编译时,我有一个错误Identifier not found "HRGN"

我认为我必须在uses中包含一个库,但我没有找到任何内容。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

快速检查源代码可以发现HRGN中定义了LCLType.pp

LCLType添加到相关单元,然后编译代码。