5,388
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.FormCreate(Sender: TObject);
Var
MyPanel : Array of TPanel;
i,j,k: Integer;
begin
SetLength(MyPanel,12);
for i := 0 to 11 do
begin
MyPanel[i] := TPanel.Create(Self);
MyPanel[i].Width := 130;
MyPanel[i].Height:= 80;
MyPanel[i].Parent:=self;
j:=Trunc(i/4); //取整 行
K:=i mod 4 ; //取余 列
if i<4 then
begin
MyPanel[i].Top:=30;
MyPanel[i].Left:=30+i*130;
end else
begin
MyPanel[i].Top:=30+80*j;
MyPanel[i].Left:=30+k*130;
end;
end;
end;
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TPanel = class(ExtCtrls.TPanel)
protected
procedure Paint;override;
procedure WMLBtnDown(var msg: TWMLButtonDown);message WM_LBUTTONDOWN;
procedure WMLostFocus(var msg: TMessage);message WM_KILLFOCUS;
end;
TForm2 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
end;
{ TPanel }
procedure TPanel.Paint;
var
r: TRect;
c: TColor;
begin
inherited;
if Focused then
begin
c := Canvas.Brush.Color;
Canvas.Brush.Color := clYellow;
r := ClientRect;
r.Right := r.Right - BorderWidth - 1;
r.Bottom := r.Bottom - BorderWidth - 1;
Canvas.DrawFocusRect(r);
Canvas.Brush.Color := c;
end;
end;
procedure TPanel.WMLBtnDown(var msg: TWMLButtonDown);
begin
inherited;
SetFocus;
invalidate;
end;
procedure TPanel.WMLostFocus(var msg: TMessage);
begin
Invalidate;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure MyPanelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyPanel : Array of TPanel;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Var
i,j,k: Integer;
begin
SetLength(MyPanel,12);
for i := 0 to 11 do
begin
MyPanel[i] := TPanel.Create(Self);
MyPanel[i].Width := 130;
MyPanel[i].Height:= 80;
MyPanel[i].Parent:=self;
MyPanel[i].Tag:= i ; //用tag标识
MyPanel[i].OnClick :=MyPanelClick; //赋予事件
j:=Trunc(i/4); //取整 行
K:=i mod 4 ; //取余 列
if i<4 then
begin
MyPanel[i].Top:=30;
MyPanel[i].Left:=30+i*130;
end else
begin
MyPanel[i].Top:=30+80*j;
MyPanel[i].Left:=30+k*130;
end;
end;
end;
procedure TForm1.MyPanelClick(Sender: TObject); //自己定义的事件
Var
i : Integer;
begin
i := TPanel(Sender).Tag;
MyPanel[i].Caption:=IntToStr(i);
ShowMessage(IntToStr(i));
end;
end.