Стили 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
Другие вопросы по тегам