{ 點燈遊戲--一個動态建立元件的示例
Tips : 在動态建立元件時, Parent屬性設定很重要, 如果不設定, 元件是不能顯示的~~ 呵呵, 這個是易犯的低級錯誤, 至少對我來說.
}
unit ULamp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TFormLamp = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
protected
procedure PanelClickHandle(Sender: TObject);
end;
function IsFinished: Boolean;
var
FormLamp: TFormLamp;
LampPanel : array[0..24] of TPanel;
implementation
{$R *.dfm}
function IsFinished: Boolean;
var
i: Integer;
begin
Result := True;
for i := 0 to 24 do
begin
if (LampPanel[i].Color = $006060) then Result := Result and False;
end;
end;
procedure TFormLamp.PanelClickHandle(Sender: TObject);
var
X,Y: Integer;
ThisTag: Integer;
begin
{
上: (X,Y-1); 下: (X,Y+1), 左: (X-1,Y), 右: (X+1,Y);
}
ThisTag := (Sender as TPanel).Tag;
X := ThisTag div 5;
Y := ThisTag mod 5;
LampPanel[ThisTag].Color := $ffffff - LampPanel[ThisTag].Color;
if (Y>0) then LampPanel[X*5+Y-1].Color := $ffffff - LampPanel[X*5+Y-1].Color;
if (X>0) then LampPanel[(X-1)*5+Y].Color := $ffffff - LampPanel[(X-1)*5+Y].Color;
if (Y nil then LampPanel[i].Free;
end;
end.