Обобщение:
(1) С большой вероятностью это будет ошибкой.Однако я не могу с уверенностью сказать, имеет ли это отношение к 64-битной ОС, или к VCL, или к оболочке MFC.Пожалуйста, проверьте ответы и комментарии ниже от экспертов Delphi.
(2) Обходной путь для меня:
a.Ситуация такова, что у меня есть six
ключ-значение pairs
для отображения в строке состояния.Значения будут изменены во время выполнения.
b.Кажется, я не могу set text
для более чем 10
панелей.
c.В этом отношении я буду использовать six
вызовы set text
для значений и использовать two
вызовы set text
для последних двух ключей.Таким образом, мне не нужно превышать предел 10
.
d.Чтобы заставить set text
работать, мне нужно предоставить другой текст, который у него уже есть.
e.Таким образом, пример кода может быть описан как:
// Designtime
stat1.Panels[0].Text := 'Key1'
stat1.Panels[2].Text := 'Key2'
stat1.Panels[4].Text := 'Key3'
stat1.Panels[6].Text := 'Key4'
stat1.Panels[8].Text := 'Key5__'
stat1.Panels[10].Text := 'Key6__'
// runtime
stat1.Panels[1].Text := 'Value1'
stat1.Panels[3].Text := 'Value2'
stat1.Panels[5].Text := 'Value3'
stat1.Panels[6].Text := 'Value4'
stat1.Panels[9].Text := 'Value5'
stat1.Panels[11].Text := 'Value6'
stat1.Panels[8].Text := 'Key5'
stat1.Panels[10].Text := 'Key6'
========================================================================
В моем Windows 7 X64 строка состояния не отображаетсятекст для панелей начиная с 11 правильно.
(1) Новый пустой проект приложения VCL without
, сохраняющий его, если я установлю текст для 11-й панели состояния во время разработки, текст не будет отображаться вообще во время выполнения.(См. Прикрепленные изображения.)
(2) Если я сохраню его и снова открою, текст также не будет отображаться во время разработки.
(3) Если установить текст вво время выполнения текст будет отображаться только тогда, когда новый текст отличается от старого.Скажем, текст для 11-й панели установлен на 'try'
во время разработки:
Self.stat1.Panels[10].Text := 'try'; // 'try' is not shown
self.stat1.Panels[10].Text := 'try_'; // 'try_' is shown
(4) Это происходит только на моей Windows 7 X64, но не на моей Windows XP.
(5) Я думаю, что одинаковое поведение относится ко всем версиям Delphi.
(6) Кажется, поведение больше связано с версией Windows, чем с Delphi.Я имею в виду, что тот же пример приложения будет демонстрировать вышеуказанное поведение в Windows 7, но не в Windows XP.
(7) Образец файла dfm сбрасывается, как показано ниже:
object Form3: TForm3
Left = 0
Top = 0
Caption = 'Form3'
ClientHeight = 202
ClientWidth = 731
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object stat1: TStatusBar
Left = 0
Top = 183
Width = 731
Height = 19
Panels = <
item
Text = '0'
Width = 50
end
item
Text = '1'
Width = 50
end
item
Text = '2'
Width = 50
end
item
Text = '3'
Width = 50
end
item
Text = '4'
Width = 50
end
item
Text = '5'
Width = 50
end
item
Text = '6'
Width = 50
end
item
Text = '7'
Width = 50
end
item
Text = '8'
Width = 50
end
item
Text = '9'
Width = 50
end
item
Text = '10'
Width = 50
end
item
Text = '11'
Width = 50
end>
ExplicitLeft = 248
ExplicitTop = 152
ExplicitWidth = 0
end
object btn1: TButton
Left = 152
Top = 40
Width = 433
Height = 89
Caption = 'btn1'
TabOrder = 1
OnClick = btn1Click
end
end
(8) Образцы изображений:
Может ли кто-нибудь помочь прокомментировать возможную причину?Любое предложение приветствуется!