почему не работает код? помогите кто нибудь
Создается поле где наверху блоки травы а внизу земля. И в событие клика на блок (clear) блок должен становиться невидимым . Но у меня нормально работают только блоки травы и блоки землю с правого края. В чем проблема? почему другие не исчезают но на событие реагируют . delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, XPMan, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
procedure FormCreate(Sender: TObject);
procedure clear(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,h,t,r: Integer;
grass: array [1..100] of TImage;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.WindowState:= wsMaximized;
Form1.Position:= poScreenCenter;
Form1.FormStyle:= fsStayOnTop;
Form1.BorderStyle:= bsNone;
Form1.Color:= clAqua;
for i:= 1 to 25 do
begin
grass:= TImage.Create(Self);
grass.Parent:= Self;
grass.OnClick:= clear;
grass.Picture.LoadFromFile('res\blocks\grass_up.bmp');
grass.AutoSize:= True;
grass.Top:= 380;
if i <> 1 then grass.Left:= grass[i-1].Left + grass.Width;
for h:= 30 to 40 do
begin
grass[h]:= TImage.Create(Self);
grass[h].Parent:= Self;
grass[h].Picture.LoadFromFile('res\blocks\erch_up.bmp');
grass[h].AutoSize:= True;
grass[h].Left:= grass.Left;
if h = 30 then begin
grass[h].Top:= grass.Top + grass.Height;
end
else
begin
grass[h].Top:= grass[h-1].Top + grass[h].Height;
end;
grass[h].OnClick:= clear;
end;
end;
end;
procedure TForm1.clear(Sender: TObject);
begin
lbl1.Caption:= (Sender as TImage).Name;
for t:= 1 to 40 do
begin
if Sender = grass[t] then
begin
grass[t].Visible:= False;
end;
end;
end;
end.
В НЕКОТОРЫХ МЕСТАХ КВАДРАТНЫЕ КАВЫЧКИ УБРАЛИСЬ ПРИ ДОБАВЛЕНИИ СЮДА
я допер