Разработчики, работающие с Delphi XE2, могут столкнуться с неприятной проблемой: при переключении между видами формы (Source и Form, с помощью клавиши F12) свойство Bitmap компонента TImageList может быть изменено без явных действий со стороны разработчика. Это приводит к тому, что модули, которые не были изменены, помечаются как изменённые, что может вызвать путаницу при работе с системой контроля версий.
Описание проблемы
При использовании TImageList в приложениях на Delphi XE2 Update 3, обновление до версии 4 невозможно из-за несовместимости с некоторыми сторонними компонентами. При переключении между видами формы (Source и Form) с помощью F12, может произойти изменение свойства Bitmap у TImageList, даже если разработчик не вносил изменений. Это изменение отображается в системе контроля версий как несколько изменённых байт в данных Bitmap.
Пример изменения в коде
@@ -830,7 +830,7 @@
Left = 760
Top = 480
Bitmap = {
- 494C01010200E402E40210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 494C01010200E802E80210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
^^ ^^ <-- два байта изменились
Альтернативные способы работы с ресурсами
Некоторые разработчики рекомендуют использовать ресурсы вместо битмапов в файлах .dfm, что может быть решением данной проблемы. Также стоит отметить, что аналогичное поведение может быть более выраженным при работе с изображениями в формах FireMonkey.
Подтверждённое решение
Существует известный баг в IDE, который уже был зарегистрирован в Embarcadero Quality Central, в частности под номером QC 92769. К сожалению, на момент последней информации, проблема не была исправлена.
Работа с багом
Хотя исправление бага ещё не выпущено, разработчики могут использовать следующий подход для минимизации влияния проблемы:
Использование ресурсов: Перемещение изображений в файл ресурсов и использование их через компоненты, такие как TImage с указанием идентификатора ресурса, вместо прямого использования TImageList.
Отслеживание изменений: Внимательно следить за изменениями в коде и, при необходимости, игнорировать изменения в файлах с битмапами в системе контроля версий.
Пример кода для использования ресурсов
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromResourceName(HInstance, 'IMAGE1');
end;
В этом примере IMAGE1 - это идентификатор ресурса, который был добавлен в проект и содержит изображение.
Заключение
Проблема с изменением свойства Bitmap в TImageList при переключении между видами формы в Delphi XE2 является известным багом. Использование ресурсов вместо битмапов в файлах .dfm может помочь избежать ненужных изменений и упростить работу с системой контроля версий. Разработчикам рекомендуется следить за обновлениями в Embarcadero Quality Central для получения информации о возможном исправлении этого бага.
Разработчики Delphi XE2 сталкиваются с багом, из-за которого свойство `Bitmap` компонента `TImageList` изменяется при переключении между видами формы, что приводит к неправильному отображению измененных файлов в системе контроля версий.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS