2013-05-23 15 views
5

sto lavorando su una grande applicazione Delphi con una tonnellata di codice legacy che viene convertito in XE2. Sto implementando gli stili vcl e per la maggior parte non ci sono problemi.stili Delphi XE2 VCL non disegno TabSheets correttamente

Tuttavia in alcune forme, in particolare dove ho un tpanel, con un controllo di pagina e fogli linguetta su di essi, i tabsheets a volte non disegnando correttamente. Visualizzano qualsiasi immagine precedentemente presente nell'area in cui si trova il foglio di calcolo. Quindi, quando il modulo mostra per primo che sarà la schermata di sfondo sul mio computer, ma se cambio scheda, gli sfondi/le etichette/i componenti della scheda sembrano sovrapporsi.

Ciò si verifica solo quando sto usando gli stili VCL, se non applicare lo stile, tutto sembra per visualizzare normalmente.

Si verifica solo su alcune schede. Ho cercato di isolare una proprietà specifica o una chiamata al metodo (o una sua mancanza) che potrebbe causare questo problema, ma sono davvero in difficoltà, soprattutto data la dimensione pura dei metodi chiamati in questo codice (in alcune forme, il metodo che viene attivato sulla modifica scheda è su un 1000 righe di codice).

sono andato a fare alcune schermate di dimostrare che ciò accada, ma le forme sulle schermate sono tutti resi in modo corretto. Questo mi suggerisce che esiste una sorta di disconnessione tra ciò che sto vedendo e ciò che è in realtà "lì".

Qualche consiglio sarebbe più apprezzati.

+1

Quali il contenuto di una schermata è diverso da quello che in realtà vede sullo schermo –

+1

@MrLister Yep?? , il mo La cosa strana che ho visto – Elissa

+0

Esiste un disegno personalizzato nel codice (cercare 'OnDraw')? Sta scherzando con DoubleBuffering o altre proprietà che possono influenzare lo sviluppo dello schermo? –

risposta

1

Forse si dovrebbe utilizzare il Vcl Styles Utils ciò che corregge molti bug stile in Delphi. Se ricordo di aver dipinto correttamente i TTabSheets sono errati di default - eccetto che li hai inseriti in un TPanel/etc.

0

sono stato in grado di riprodurre ciò che credo è lo stesso problema su un PC con Windows XP,
finestre 8.1 sembrava funzionare bene con lo stesso exe

Im esecuzione Delphi XE 5

Avviare un nuovo VCL Forms Application

Copia il codice qui sotto nella vostra clipboard

Clicca sulla forma principale nel nuovo progetto e Incolla

quindi vai a Progetto> Opzioni> Applicazione> Aspetto> "Scegli uno stile per es. Luna"

Eseguire il progetto, la scheda 'TS3' ha lo sfondo di tutto ciò che era lì prima.

impostazione DoubleBuffered true sul pannello come suggerito da Elissa sopra ce l'ha fatta stampare meglio

anche impostazione DBEdit15, DBEdit16 e DBEdit18 false visibile reso stampa migliore - ma sono stato in grado di determinare il motivo per cui

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 
Problemi correlati