Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2007, 10:11   #1
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию История изображений

Во многих программах есть история, я попытался сделать массив из TImage, но когда пытаюсь получить Image из этого массива ничего не происходит.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;
  images: array of TImage;
  index: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.Rectangle(10, random(50), 50, random(100));
SetLength(images, Length(images) + 1);
images[High(images)]:=TImage.Create(nil);
images[High(images)]:=Image1;
index:=index + 1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
index:=index - 1;
Image1.Picture.Assign(images[index].Picture);
Image1.Refresh;
end;
end.
Это упрощенная версия кода.
AidarBik вне форума Ответить с цитированием
Старый 07.11.2007, 10:25   #2
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Я делал по другому. Вот мой вариант, что нужно подправишь:
Код:
var
  Form1: TForm1;a:array[1..3] of timage;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
for i:=1 to 3 do
a[i]:=timage.Create(nil);
a[1].Height:=image1.Height;
a[1].Width:=image1.Width;
a[1].Picture:=image1.Picture;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
image1.Picture.LoadFromFile('d:\у.ico');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
image1.Height:=a[1].Height;
image1.Width:=a[1].Width;
image1.Picture:=a[1].Picture;
end;
Можешь присваивать Битмап, метафайл, icо ит.п. Остальные картинки можно сделать аналогично.
bill вне форума Ответить с цитированием
Старый 07.11.2007, 13:40   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Не совсем понял о какой истории речь. Отмена изменений в изображении или последние открытые файлы? Или что-то другое?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 07.11.2007, 14:50   #4
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Отмена изменений
AidarBik вне форума Ответить с цитированием
Старый 07.11.2007, 15:15   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Можно сделать массив битмапов - array of TBitmap, раз изображение можно изменять то это точно битмап, так что TBitmap отлично подходит.
У тебя ограничено кол-во отмен или до самого начала? Если до начала то нужно динамический массив делать.
Вот пример наращивания такого массива
Код:
SetLength(massiv,Length(massiv)+1);
massiv[Length(massiv)-1]:=TBitmap.Create;
massiv[Length(massiv)-1].Assign(источник картинки); //или заполняешь любым другим способом
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 07.11.2007 в 15:23.
mutabor вне форума Ответить с цитированием
Старый 07.11.2007, 15:46   #6
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Все, вопрос решен. Спасибо Биллу!
AidarBik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Офигенная история rpy3uH Свободное общение 13 21.08.2008 18:02
Где скачать Пожар в долине. История создания персональных компьютеров(Книга) LuMax Свободное общение 0 05.04.2008 23:07
История Internet Explorer N!ckeL Общие вопросы Delphi 1 02.04.2008 18:36