Мое приложение будет отображать некоторые сведения в строке состояния при инициализации. Я показываю это путем рисования значков (вкл. И выкл.) В строке состояния. Следующий код отлично работает в Embarcadero XE3, но больше не работает в версии XE7. Код не вызывает никаких исключений или ошибок. Как я могу это исправить?Нарисуйте изображение в StatusBar, не работающем в версии XE7
procedure TFormMain.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
var
i: Integer;
begin
case Panel.Index of
3:
begin
i := ICON_DATABASE_OFF;
if HasDatabaseConnection() then
i := ICON_DATABASE;
ImageList1.Draw(StatusBar.Canvas, Rect.Left, Rect.Top, i);
end;
4:
begin
i := ICON_GLOBE_OFF;
if HasInternetConnection() then
i := ICON_GLOBE;
ImageList1.Draw(StatusBar.Canvas, Rect.Left, Rect.Top, i);
end;
end;
end;
В XE3:
UPDATE
(См комментарии)
ошибка происходит потому, что OnResizeEvent
из FormMain
.
procedure TFormMain.FormResize(Sender: TObject);
begin
//StatusBar1.Panels[0].Width := FormMain.Width - 448;
StatusBar1.Panels[0].Width := ClientWidth - 448;
end;
Значения, показавшие, когда я отладки одинаковы в обоих вариантах:
В XE3:
FormMain.Width = 1400
ClientWidth = 1024
В XE7:
FormMain. Ширина = 1400
ClientWidth = 1024
Определенный размер 754 для ширины и 515 для высоты.
По какой-то непонятной причине в XE7 значки не выделены.
Если я изменил размер формы после ее открытия, значки отображаются правильно!
Я не применял ни одной кожи или менял стиль моего приложения. Я использую конфигурации по умолчанию
Строка состояния будет иметь 6 painels:
0 - показывать подсказки (ширина гибка, изменения, когда форма изменение ширины)
1 - покажет имя текущей выбранной компании (фиксированная ширина)
2 - покажет имя текущего пользователя (фиксированная ширина)
3 - покажет иконку (фиксированная ширина)
4 - покажет иконку (фиксированная ширина)
5 - покажет дата (фиксированная ширина)
С момента основания nels 1 ~ 5 имеют фиксированный размер (всего = 448), я не вижу причин для пересчета в% ширины болиля [0].
Опять же, проблема возникает только в XE7.
Вы используете стили в своем проекте (Project - Options - Application - Appearance)? Какова ширина времени выполнения вашей формы? Если оно меньше 450, появляются ли изображения, если вы увеличиваете ширину, чтобы ширина панели [0] 'была положительной? Пожалуйста, отредактируйте свой вопрос с ответами на эти вопросы и включите факты, которые вы упомянули в комментариях к ответу Ken Whites. –
Неудобно найти, что люди, обращающиеся за помощью, слишком небрежны, чтобы ответить несколькими простыми деталями, которые либо исключили бы, либо подтвердили бы возможные причины их проблем. –
Отредактировано. Пожалуйста, просмотрите его. – rodrigopandini