Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 497

/ вопрос открыт /

Доброго времени суток, у/э.

Итак, вопрос состоит из двух частей, в первом хочу чтобы мне объяснили, ну а во втором желательно помочь.

1) Итак, имеется клавиша BitBtn1 и я в неё загружаю картинку с ImageList1. Смотрим код:



Итак, при показе формы всё прекрасно. Появляется кнопочка уже с картинкой. Но когда обрабатывается событие BitBtn1.Click, то картинка куда то исчезает! Хотя компликтуется без ошибок.

2) Решил проблему так:



но тут опять косяк! Когда картинка сменяется, то вокруг картинки появляется белый фон, а не прозрачный как нужно!

Эксперты, жду вашей помощи!

Приложение:
  1. -----1--------------------------------------------------
  2.  
  3. procedure TForm1.FormShow(Sender: TObject);
  4. begin
  5. imagelist1.GetBitmap(0, bitbtn1.Glyph);
  6. end;
  7.  
  8. procedure TForm1.BitBtn1Click(Sender: TObject);
  9. begin
  10. if bitbtn1.Tag = 0 then
  11. imagelist1.GetBitmap(1, bitbtn1.Glyph) else imagelist1.GetBitmap(0, bitbtn1.Glyph);
  12. if bitbtn1.Tag = 0 then bitbtn1.Tag := 1 else bitbtn1.Tag := 0;
  13. end;
  14.  
  15. -----2--------------------------------------------------
  16.  
  17. procedure TForm1.FormShow(Sender: TObject);
  18. begin
  19. imagelist1.GetBitmap(0, bitbtn1.Glyph);
  20. end;
  21.  
  22. procedure TForm1.BitBtn1Click(Sender: TObject);
  23. var
  24. bit_1 : tbitmap;
  25. begin
  26. bit_1 := tbitmap.Create;
  27. if bitbtn1.Tag = 0 then
  28. begin
  29. imagelist1.GetBitmap(1, bit_1);
  30. bitbtn1.Glyph := bit_1;
  31. bitbtn1.Tag := 1;
  32. end else
  33. begin
  34. imagelist1.GetBitmap(0, bit_1);
  35. bitbtn1.Glyph := bit_1;
  36. bitbtn1.Tag := 0;
  37. end;
  38. bit_1.Free;
  39. end;


padonak Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 9 августа 2010, 18:45
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, padonak!
Если был дан весь проект, было бы попроще. При работе с transparent-свойствами очень много тонкостей. Как эти свойства установлены в ImageList1, а также как они выставлялись при добавлении самих картинок?
Я собрал из твоих кусочков кода под номером 2 проект и он корректно заработал. Попробуй также собрать заново. Свойства ImageList, кроме размеров - по-умалчиванию. При добавлении картинок редактор автоматически выставляет отдельно для каждой картинки свойство Transparent color (в моём случае был clFuchsia). Тут же нужно выставить это свойство в clNone, т.к. после сохранения редактором списка, эти настройки блокируются. Создавемый объект bit_1 имеет свойство Transparent равное tmAuto, и именно он будет у нас отвечать за прозрачный цвет.

PS. Почему не работает в первом случае не знаю. У меня вообще картинка не менялась.

PPS. Бывали случаи, когда уже вроде бы отлаженный пример вдруг начинал работать некорректно. Побеждалось удалением и добавлением заново ImageList.

Ответ отправил: DNK (статус: Студент)
Время отправки: 11 августа 2010, 16:23
Оценка за ответ: 3

Комментарий к оценке: не помогло ((( пришлось делать две кнопки... самому противно...

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 9 августа 2010, 19:47; участников в обсуждении: 2.

9 августа 2010, 18:47: Вопрос перемещён из тематического раздела Delphi » Оболочка Delphi, компилятор, версии среды и т.д. в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Тов. Женька

Тов. Женька (статус: 3-ий класс), 9 августа 2010, 19:29 [#1]:

" Итак, имеется клавиша BitBtn1 и я в неё загружаю картинку с ImageList1."

Нет, не загружаете. Скорее из нее.

Попробовал код, ничего не пропадает. Озвучьте версию Delphi, пожалуйста.
padonak

padonak (статус: Посетитель), 9 августа 2010, 19:47 [#2]:

Тов. Женька: что значит "из неё"? она вобще пустая! картинки с индексами 0 и 1 сохранены в ImageList1. Насчёт версии незнаю, скачивал с оф. сайта... вобще Delphi 7

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.02 сек.