Стили Delphi XE2 VCL не отображают правильно табличные таблицы
Я работаю над большим приложением Delphi с тонной устаревшего кода, который преобразуется в xe2. Я реализую стили vcl и по большей части проблем нет.
Однако в некоторых формах, особенно там, где у меня есть tpanel, с элементами управления страницей и вкладками на них, вкладки иногда отображаются неправильно. Они отображают любое изображение, которое было ранее в области, где находится вкладка. Таким образом, когда форма впервые показывает, что это будет фоновый экран на моем компьютере, но если я изменю вкладки, фоны / ярлыки / компоненты вкладок будут перекрываться.
Это происходит только тогда, когда я использую стили vcl, если я не применяю стиль, все выглядит нормально.
Это происходит только на некоторых вкладках. Я пытался изолировать конкретное свойство или вызов метода (или его отсутствие), которые могут вызывать эту проблему, но я действительно изо всех сил, особенно учитывая чистый размер методов, вызываемых в этом коде (в некоторых формах, метод, который вызывает на вкладке изменение более 1000 строк кода).
Я решил сделать несколько снимков экрана, чтобы продемонстрировать это, но формы на снимках экрана отображаются правильно. Это наводит меня на мысль, что между тем, что я вижу, и тем, что на самом деле "там", есть какая-то связь.
Любой совет будет наиболее ценным.
2 ответа
Возможно, вам следует использовать Vcl Styles Utils, который исправляет большую часть стилевой ошибки в Delphi. Если я правильно помню, рисование TTabSheets по умолчанию некорректно - за исключением того, что вы положили его в TPanel/etc.
Я смог воспроизвести то, что я считаю, является той же проблемой на ПК с Windows XP,
Windows 8.1, кажется, работает нормально с тем же exe
Я бегу Delphi XE 5
Запустите новое приложение VCL Forms
Скопируйте приведенный ниже код в буфер обмена
Нажмите на основную форму в вашем новом проекте и вставьте
затем выберите "Проект"> "Параметры"> "Приложение"> "Внешний вид"> "Выбрать любой стиль, например, Luna".
Запустите проект, вкладка "ts3" имеет фон того, что там было раньше.
установка DoubleBuffered в true на панели, как предложено Элиссой выше, делала печать лучше
Кроме того, установка для DBEdit15, DBEdit16 и DBEdit18 значения false показала улучшение качества печати, но я не смог определить, почему
object pgc1: TPageControl
Left = 0
Top = 0
Width = 635
Height = 299
ActivePage = ts3
Align = alClient
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
object ts3: TTabSheet
Caption = 'ts3'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ImageIndex = 2
ParentFont = False
object pTotals: TPanel
Left = 3
Top = 36
Width = 486
Height = 237
BevelOuter = bvNone
DoubleBuffered = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentDoubleBuffered = False
ParentFont = False
TabOrder = 0
object Label19: TLabel
Left = 3
Top = -4
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label21: TLabel
Left = 3
Top = 59
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label22: TLabel
Left = 3
Top = 115
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label23: TLabel
Left = 3
Top = 167
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label24: TLabel
Left = 233
Top = 216
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
Visible = False
end
object Label29: TLabel
Left = 343
Top = 145
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label30: TLabel
Left = 343
Top = 165
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label48: TLabel
Left = 3
Top = 21
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label53: TLabel
Left = 319
Top = 91
Width = 8
Height = 13
Caption = 'llll'
end
object Label54: TLabel
Left = 3
Top = 139
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object Label64: TLabel
Left = 343
Top = 185
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object lbCons: TLabel
Left = 3
Top = 81
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
Visible = False
end
object lPeriod_1: TLabel
Left = 343
Top = -4
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object lPeriod_2: TLabel
Left = 343
Top = 16
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object lPeriod_3: TLabel
Left = 343
Top = 39
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object lPeriod_4: TLabel
Left = 343
Top = 60
Width = 8
Height = 13
Alignment = taRightJustify
Caption = 'llll'
end
object btnPayHist: TButton
Left = 15
Top = 200
Width = 121
Height = 25
Caption = 'btn'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
end
object btnRefreshTotals: TBitBtn
Left = 355
Top = 112
Width = 121
Height = 25
Caption = 'btn'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object DBEdit13: TDBEdit
Left = 23
Top = 0
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ParentShowHint = False
ReadOnly = True
ShowHint = False
TabOrder = 2
end
object DBEdit14: TDBEdit
Left = 23
Top = 25
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ParentShowHint = False
ReadOnly = True
ShowHint = False
TabOrder = 3
end
object DBEdit15: TDBEdit
Left = 23
Top = 119
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 4
end
object DBEdit16: TDBEdit
Left = 23
Top = 171
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 5
end
object DBEdit17: TDBEdit
Left = 249
Top = 213
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
DataField = 'Last_Statement'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 6
Visible = False
end
object DBEdit18: TDBEdit
Left = 23
Top = 143
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 7
end
object DBEdit19: TDBEdit
Left = 23
Top = 63
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 8
end
object DBEdit20: TDBEdit
Left = 23
Top = 87
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 9
Visible = False
end
object DBEdit21: TDBEdit
Left = 363
Top = 0
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 10
end
object DBEdit22: TDBEdit
Left = 357
Top = 16
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 11
end
object DBEdit23: TDBEdit
Left = 363
Top = 43
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 12
end
object DBEdit24: TDBEdit
Left = 363
Top = 64
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 13
end
object DBEdit25: TDBEdit
Left = 363
Top = 150
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 14
end
object DBEdit26: TDBEdit
Left = 363
Top = 170
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 15
end
object DBEdit27: TDBEdit
Left = 355
Top = 182
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 16
end
object DBEdit28: TDBEdit
Left = 363
Top = 96
Width = 121
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 17
end
end
object Panel2: TPanel
Left = 0
Top = 0
Width = 627
Height = 30
Align = alTop
BevelOuter = bvNone
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 1
object pDisp2: TPanel
Left = 69
Top = 4
Width = 473
Height = 21
BevelOuter = bvNone
Caption = 'pDisp2'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
object Label18: TLabel
Left = 1
Top = 4
Width = 8
Height = 13
Caption = 'llll'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object DBEdit29: TDBEdit
Left = 51
Top = 0
Width = 421
Height = 21
TabStop = False
Color = clBtnFace
Ctl3D = True
DataField = 'Name'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentCtl3D = False
ParentFont = False
ReadOnly = True
TabOrder = 0
end
end
end
end
object ts1: TTabSheet
Caption = 'ts1'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
object shp1: TShape
Left = 48
Top = 32
Width = 521
Height = 201
end
object Shape1: TShape
Left = 120
Top = 104
Width = 377
Height = 81
end
end
end