Показать сообщение отдельно
  #1  
Старый 23.10.2013, 23:22
Andrey_Ryzhov Andrey_Ryzhov вне форума
Прохожий
 
Регистрация: 02.09.2013
Адрес: Новгородская обл. пгт Пролетарий
Сообщения: 10
Версия Delphi: Lazarus, ECDXE3
Репутация: 10
Печаль Управление объектом массива

И опять здравствуйте. Переехал тут на Lazarus, решил ощутить все прелести FreePascal. Есть проблема. Моя задача, создать n-ое количество компонентов TImage, и сделать так, что-бы они двигались после создания. Решил забацать массив, массив-то работает (пока создает только 1 TImage (ну это так пока и задумывается)), но как сделать так, что-бы созданный имейдж начал сдвигаться? Я знаю, как это сделать со статическим Image на форме, но не понимаю, как передать ему свойство left, когда он динамический. Определенно, думаю, без таймера никуда... но ... не получается...
На просторах паутины нашел множество примеров, пробовал, пробовал... - вспотел. Хотелось бы услышать мудрый совет.... Спасибо.
И, да... ещё.. есть 2 пустых таймера, один из них, наверно и должен двигать имейджи, а второй - зарезервирован на потом.

Собственно - кодец:

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

 const N= 1;
var
  Form1: TForm1;
  Img: array[1..N,1..N] of TImage;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
  var i,j: Integer;
    C: Integer;
begin
  for i := 1 to 1 do
    begin
      for j := 1 to 1 do
        begin
          Img[i,j] := TImage.Create(Self);
          Img[i,j].Parent := Self;
          Img[i,j].Left := i*100;
          Img[i,j].Top := j*80;
          Img[i,j].Width := 30;
          Img[i,j].Height := 30;
          Img[i,j].Picture.LoadFromFile(IntToStr(i)+'.bmp');
          Timer2.Enabled:= true;
      end;
        end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
end;

end.
Ответить с цитированием