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

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

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

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

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

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

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

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

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

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

Хм. При таком раскладе картинка не хочется меняться на указанную, как первая встанет, в данном случае 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 в 17:50.
Shouldercannon вне форума Ответить с цитированием
Старый 29.11.2013, 21:49   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
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, 13:48   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

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

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

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

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

Как загрузить картинку из 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, 15:54   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Подскажите пожалуйста, как поместить картинку из 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 в 17:08.
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2013, 16:50   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

Ура.
Код:
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 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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