И снова здравствуйте, немного подумал о тех проблемах, которые могут возникнуть при создании вашей программы (приложения) и пришел к тому, что возможно некоторым необходимо прятать картинки, иконки именно в своей программе, можно в файле ресурсов, но я хотел бы рассказать как спрятать это все дело в самой программе. Хранить теже самые иконки в папке с программой — не самый лучший способ, так как пользователь удалит что-нибудь, а Вам еще думать защиту от «дурака«. Так, что выгодней бы было хранить все в программе, хотя от этого размер Вашего исполняемого файла увеличивается, но способ все равно покажу, а делать выводы по нему только Вам. На форме у меня следующие компоненты

  • TImageList
  • TButton
  • TImage

Вот весь перечень компонентов, который нам необходим, чтобы осуществить то, что я описал выше. Все картинки, иконки мы будем хранить в TImageList, а в TImage мы будем их отображать (естественно по нажатию на кнопку, вот для этого нам и TButton). Незнаю у кого как, но я сразу заметил недостатки данного метода, в TImageList есть свойство Width и Height, которые задают размер хранимых наших картинок, иконок и так далее. Так вот, если выставить сильно большой размер, например 1024х768, то тут произойдет зависание, что и есть минус, этот «глюк» был обнаружен в компиляторе Borland Delphi 7.0. Возможно в Delphi 2010 этой проблемы уже нету, как опробую это дело, так сразу и отпишу об этом.
Так вот, в TImageList хранятся все наши картинки, иконки. Так давайте на событие OnClick нашей кнопки напишем следующий код

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 bmp:TBitmap;
begin
   try
    bmp:=TBitmap.Create;
    ImageList1.GetBitmap(0,bmp);
    Image1.Picture.Assign(bmp);
    bmp.Free;
   except
    on e:Exception do
     bmp.Free;
   end;
end;

Как видите GetBitmap устанавливает в TImageList указатель на индекс, который мы указываем и сохраняет изображение под этим индексом в bmp. Перед этим мы конечно же создали наш TBitmap, а затем с помощью Assign мы сохраняем в TImage. Как видите ничего сложного, работа с иконками тоже самое, только тип немного другое, давайте посмотрим как работать в таком случае с иконками.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 ico:TIcon;
begin
   try
    ico:=TIcon.Create;
    ImageList1.GetIcon(0,ico);
    Image1.Picture.Assign(ico);
    ico.Free;
   except
    on e:Exception do
     ico.Free;
   end;
end;

Как видите все похоже. Думаю урок пригодится в дальнейшем. Да, но не забывайте, что если работаете с ico, то на индексе с которого считываете из TImageList должна лежать картинка именно такого расширения — ico.

Хочу заметить, что в настоящее время очень трудно представить любого человека без мобильного телефона. А развитие технологий позволяет делать телефоны с множеством различных функций. Например, китайский sony ericsson x10 тому пример, который Вы кстати можете купить через Интернет, что очень удобно и сэкономить свое драгоценное время.
Автор статьи - Andrey53

Метки: ,

Оставить комментарий

Вы можете использовать следующие теги:

*