| 
| 
 | Вопрос # 617/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!У меня на форме есть Image1, ImageList1, Button1,
 Button2, Button3. Допустим, я ImageList1 загрузил
 тремя иконками. Как сделать так, чтобы нажав на
 Button1, в Image1 отображалась иконка с индексом
 0 (то есть первая), нажав на Button2, отображалась
 иконка с индексом 1 (то есть вторая), нажав на Button3
 отображалась иконка с индексом 2, (то есть третья) ну
 и так далее. Короче говоря, мне нужно чтобы в Image1
 отображались разные иконки, как в Memo1 отображается
 текст.Заранее благодарен.
 
|  |   Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)Вопрос отправлен: 7 июня 2007, 00:10
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Толков Геннадий Викторович!Здравствуйте, Толков Геннадий Викторович!
 Я думаю это вас натолкнёт на полёт мысли
 ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
 где ноль - индекс картинки в ImageList1
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 7 июня 2007, 01:33
 Оценка за ответ: 5
 |  Ответ #2. Отвечает эксперт: Venom Здравствуйте, Толков Геннадий Викторович!Можно сделать следующим образом:
 1. в свойстве Tag для каждой кнопки указать номер картинки, которая будет отображаться при нажатии на кнопку.
 2. по событию Onclick для одной из кнопок прописать:
 
 var bitmap:TBitmap;
 i:integer;
 begin
 bitmap:=TBitMap.Create;
 i:=(Sender as TButton).Tag;
 Edit1.Text:=IntToStr(i);
 ImageList1.GetBitMap(i,bitmap);
 Image1.Picture.Bitmap:=bitmap;
 end;
 
 3.Данную процедуру (например, Button1Click(Sender) )указать в событии onclick для каждой кнопки.
 
 Тогда одной процедурой можно решить подобную проблему.
 
|  | Ответ отправил: Venom (статус: 1-ый класс)Время отправки: 7 июня 2007, 06:27
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 8 июня 2007, 11:09; участников в обсуждении: 2. 
|   | Venom (статус: 1-ый класс), 7 июня 2007, 06:28 [#1]:хм... строчка
 Edit1.Text:=IntToStr(i);
 не нужна, это я для себя писал, для проверки
   |  
|   | Вадим К (статус: Академик), 7 июня 2007, 15:12 [#2]:to Venom: Мне кажеться, у вас будут утечки памяти в приведённом коде. Объект то вы создаёте, а кто удалять будет за собой?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Venom (статус: 1-ый класс), 8 июня 2007, 05:51 [#3]:Вы правы, писал второпях, замечание принимается  2Толков Геннадий Викторович
 в самом конце желательно добавить Bitmap.Free;
 |  
|   | Вадим К (статус: Академик), 8 июня 2007, 11:09 [#4]:Во, вот теперь хорошо. А для общего развития добавлю, что вообщето конструкция присваивания одного объекта другому и удалением, например так var p,t:TObject;
 begin
 p:=TObject.create;
 t:=TObject.create;
 p:=t;
 t.free;
 p.free;
 
 В этом коде на строке p.free будет исключение, так как объекта уже нет. почему - подумайте.
 
 Но в нашем случае, с картинками, всё нормально - так как в коде происходит не присваивание указателей (это подсказка к предыдущему вопросу) а реальное копирование. Можете сами подсмотреть в Graphics.pas
 Галочка "подтверждения прочтения" - вселенское зло. |  31 января 2011, 19:27: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |