Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 29.11.2013, 13:17   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,815
По умолчанию Загрузить картинку в TSpeedButton из TImageList

Доброго времени суток. Подскажите, пожалуйстка как загрузить картинку в TSpeedButton из TImageList.
Shouldercannon вне форума Ответить с цитированием
Старый 29.11.2013, 13:56   #2
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 368
По умолчанию

У меня на Delphi 7 вышла такая строка:
Код:
ImageList1.GetBitmap(1,SpeedButton1.Glyph);
В этом методе первый параметр есть номер картинки в ImageList, второй - место, куда эту картинку грузить.

З.Ы. Использовал BMP-картинки.
Программирую по необходимости

Последний раз редактировалось tsar_; 29.11.2013 в 13:59.
tsar_ вне форума Ответить с цитированием
Старый 29.11.2013, 15:35   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,815
По умолчанию

Хм. При таком раскладе картинка не хочется меняться на указанную, как первая встанет, в данном случае 0, так и всё.
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if SpeedButton1.Tag = 0 then
  begin
    ImageList1.GetBitmap(1, SpeedButton1.Glyph);
  end
  else
  begin
    ImageList1.GetBitmap(0, SpeedButton1.Glyph);
  end;
end;

Последний раз редактировалось Shouldercannon; 29.11.2013 в 16:50.
Shouldercannon вне форума Ответить с цитированием
Старый 29.11.2013, 20:49   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Код:
var Bitmap: Tbitmap;
begin
  Bitmap:=Tbitmap.Create;
  SpeedButton1.Tag:=Integer(not Boolean(SpeedButton1.Tag));
  ImageList1.GetBitmap(SpeedButton1.Tag,Bitmap);
  SpeedButton1.Glyph:=Bitmap;
  Bitmap.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.11.2013, 12:48   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,855
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
SpeedButton1.Tag:=Integer(not Boolean(SpeedButton1.Tag));
Омг!
Код:
SpeedButton1.Tag := 1 - SpeedButton1.Tag;

Последний раз редактировалось phomm; 30.11.2013 в 12:51.
phomm вне форума Ответить с цитированием
Старый 30.11.2013, 13:16   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Цитата:
Омг!
Согласен. Короче и прозрачней. Но нужно себе еще и трудности создавать, как без них Но есть и плюс - какой бы Tag изначально не был будет работать, а с вычитанием проблема
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.11.2013 в 13:20.
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 11:21   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,815
По умолчанию

Как загрузить картинку из PngImageList1 в PngSpeedButton1? Тут уже сложнее.
Код:
procedure TForm1.PngSpeedButton1Click(Sender: TObject);
var
  png: TPNGObject;
begin
  png := TPNGObject.Create;
  PngSpeedButton1.Tag := Integer(not Boolean(PngSpeedButton1.Tag));
  PngImageList1.GetBitmap(PngSpeedButton1.Tag, png);
  PngSpeedButton1.Glyph := png;
  FreeAndNil(png);
end;
На строках с png
[Error] Unit1.pas(40): Incompatible types: 'TBitmap' and 'TPNGObject'
[Error] Unit1.pas(41): Incompatible types: 'TBitmap' and 'TPNGObject'

Несовместимые типы: 'TBitmap' и 'TPNGObject'
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2013, 14:54   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,815
По умолчанию

Подскажите пожалуйста, как поместить картинку из PngImageList1 в TPNGObject.
С обычной загрузкой из файла всё просто
Код:
var
  png: TPNGObject;
begin
  png := TPNGObject.Create;
  PngSpeedButton1.Tag := Integer(not Boolean(PngSpeedButton1.Tag));
  png.LoadFromFile(ExtractFilePath(Application.ExeName) + Format('%d.png', [PngSpeedButton1.Tag]));
  PngSpeedButton1.PngImage.Assign(png);
  FreeAndNil(png);
end;
но как это сделать с PngImageList1?

Последний раз редактировалось Shouldercannon; 02.12.2013 в 16:08.
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2013, 15:50   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Для этого нужно как минимум иметь такие компоненты. Первый раз об их существовании слышу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2013, 16:08   #10
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,815
По умолчанию

Ура.
Код:
procedure TForm1.PngSpeedButton1Click(Sender: TObject);
var
  png: TPNGObject;
begin
  png := TPNGObject.Create;
  PngSpeedButton1.Tag := Integer(not Boolean(PngSpeedButton1.Tag));
  png := PngImageList1.PngImages.Items[PngSpeedButton1.Tag].PngImage;
  PngSpeedButton1.PngImage.Assign(png);
  //FreeAndNil(png); // Не высвобождаем или вызовет ошибку на третьем клике. Скорее всего само высвобождается после закрытия программы
end;
Сие есть, называется PngComponents, имеет на борту: PngSpeedButton, PngBitBtn, PngImageList, PngImageCollection, PngCheckListBox.
Shouldercannon вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить картинку ser70 Общие вопросы C/C++ 6 02.09.2013 11:32
Не могу загрузить картинку в ImageList АлМазСофт Компоненты Delphi 11 22.08.2013 15:51
Загрузить картинку в PictureBox Wolf-alone C# (си шарп) 3 25.03.2012 02:47
как загрузить в paintbox картинку? blackstersl Общие вопросы Delphi 7 05.06.2009 17:20
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 22:13


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS