Delphi XE2 VCL样式无法正确绘制TabSheets

时间:2013-05-23 09:36:13

标签: delphi delphi-xe2 vcl-styles

我正在开发一个大型的delphi应用程序,其中包含一大堆遗留代码,正在转换为xe2。我正在实现vcl样式,并且大多数情况下都没有问题。

但是在某些表单上,特别是在我有tpanel的地方,页面控件和标签页上,标签页有时无法正确绘图。它们显示以前在标签页所在区域中的任何图像。因此,当表单首次显示时,它将成为我计算机上的背景屏幕,但如果我更改选项卡,则选项卡背景/标签/组件似乎重叠。

仅当我使用vcl样式时才会出现这种情况,如果我不应用样式,则所有内容都会正常显示。

仅在某些标签上出现。我试图隔离可能导致此问题的特定属性或方法调用(或缺少),但我真的很挣扎,特别是考虑到此代码中调用的方法的纯大小(在某些形式中,触发的方法)选项卡更改超过1000行代码。)

我去拍了一些屏幕截图来演示这种情况,但屏幕截图上的表格都是正确呈现的。这告诉我,我所看到的和实际上“存在”之间存在某种脱节。

任何建议都会受到最高的赞赏。

2 个答案:

答案 0 :(得分:2)

也许你应该使用Vcl Styles Utils来修正delphi中的很多样式bug。如果我没记错的话,默认情况下TTabSheets的绘制是不正确的 - 除非你把它放到TPanel / etc中。

答案 1 :(得分:0)

我能够在Windows XP PC上重现我认为相同的问题,
Windows 8.1似乎与同一个exe工作正常

我正在运行Delphi XE 5

启动新的VCL表单应用程序

将以下代码复制到剪贴板

单击新项目中的主窗体并粘贴

然后转到Project>选项>申请>外观> "选择任何样式,例如露娜"

运行项目,选项卡" ts3"有先前的任何背景。

按照Elissa上面的建议将面板上的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