gpt4 book ai didi

delphi - 在 Windows 7 X64 中,状态栏无法正确显示从第 11 位开始的面板文本

转载 作者:行者123 更新时间:2023-12-01 17:31:57 25 4
gpt4 key购买 nike

总结:
(1) 这很可能是一个错误。但是,我不能确定它是否与 64 位操作系统、VCL 或 MFC 包装器更相关。请查看下面Delphi专家的回答和评论。
(2) 我的解决方法:
A。情况是我有六个个键值要显示在状态栏中。这些值将在运行时更改。
b.看来我无法为超过 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应用程序项目而不保存,如果我在设计时设置第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)示例图片:
Designtime
rumtime

有人可以帮忙评论一下可能的原因吗?如有任何建议,我们将不胜感激!

最佳答案

在设计时它不会显示超过第 10 个:

enter image description here

但在运行时看起来像这样:

enter image description here

.dfm 文件中设置的所有属性。

至于为什么会这样我也不知道。但由于它在运行时表现良好,我认为不会造成任何严重的问题。

<小时/>

根据 Warren 的要求,这是我的 .dfm:

object Form3: TForm3
Left = 0
Top = 0
Caption = 'Form3'
ClientHeight = 105
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object StatusBar1: TStatusBar
Left = 0
Top = 86
Width = 635
Height = 19
Panels = <
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
item
Text = '12'
Width = 50
end
item
Text = '13'
Width = 50
end>
end
end

关于delphi - 在 Windows 7 X64 中,状态栏无法正确显示从第 11 位开始的面板文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com