Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Report does not find TcxPageControl

In an application that some time ago worked I added some features.
Since then when I print a report, I got an exception telling me that reportbuilder does not find the class TcxPageControl.
The Report is placed on a datamodule. The only TcxPageControl in the app is placed in a form that is dynamically created. At the time of the crash it does not exist.
The Datamodule contains no reference to any DevExpress components with the exception of a MemData table.
I have no idea why reportbuilder wants to read a class definition that it never uses.

Here is an excerpt of madExcepts bugreport :
ate/time : 2018-10-05, 18:07:16, 880ms
computer name : WIN-6UJTF8OIGQ9
user name : gs
operating system : Windows 10 x64 build 17134
system language : German
system up time : 9 hours 9 minutes
program up time : 21 seconds
processors : 2x Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
physical memory : 5250/8191 MB (free/total)
free disk space : (C:) 24,56 GB
display mode : 1920x1200, 32 bit
process id : $d68
allocated memory : 141,92 MB
largest free block : 1,30 GB
executable : ItoChart.exe
exec. date/time : 2018-10-05 18:05
version : 1.0.0.20
compiled with : Delphi 10.2 Tokyo
madExcept version : 4.0.17
callstack crc : $e155665d, $4469ac96, $a97ac64c
exception number : 1
exception class : EClassNotFound
exception message : Klasse TcxPageControl nicht gefunden.

main thread ($508):
0052cc71 +045 ItoChart.exe System.Classes ClassNotFound
0053faf9 +065 ItoChart.exe System.Classes TReader.FindComponentClass
0053d62c +020 ItoChart.exe System.Classes CreateComponent
0053d8e4 +088 ItoChart.exe System.Classes TReader.ReadComponent
0053dbb9 +089 ItoChart.exe System.Classes TReader.ReadDataInner
0053daf8 +038 ItoChart.exe System.Classes TReader.ReadData
0054b4ad +001 ItoChart.exe System.Classes TComponent.ReadState
005d43c7 +02f ItoChart.exe Vcl.Controls TControl.ReadState
005d8c99 +025 ItoChart.exe Vcl.Controls TWinControl.ReadState
006df029 +049 ItoChart.exe Vcl.Forms TCustomForm.ReadState
0053eb0d +1f5 ItoChart.exe System.Classes TReader.ReadRootComponent
00538b7e +032 ItoChart.exe System.Classes TStream.ReadComponent
0052ff2f +057 ItoChart.exe System.Classes InternalReadComponentRes
0053168f +05f ItoChart.exe System.Classes InitComponent
00531664 +034 ItoChart.exe System.Classes InitComponent
0053171d +061 ItoChart.exe System.Classes InitInheritedComponent
006de3ea +0ce ItoChart.exe Vcl.Forms TCustomForm.Create
010cbd16 +016 ItoChart.exe ppForms TppForm.Create
010cc4d6 +016 ItoChart.exe ppForms TppCustomPreviewer.Create
010c4802 +016 ItoChart.exe ppProd TppProducer.CreatePreviewForm
010c3ba7 +01b ItoChart.exe ppProd TppProducer.PrintToScreen
010c384f +05f ItoChart.exe ppProd TppProducer.Print
00f9eda9 +02d ItoChart.exe ppReport TppReport.Print
01246ce4 +268 ItoChart.exe fChart 364 +16 TChartForm.btnPrintClick
005d729b +073 ItoChart.exe Vcl.Controls TControl.Click
005fa9fa +01e ItoChart.exe Vcl.StdCtrls TCustomButton.Click
00a1b6c7 +087 ItoChart.exe cxButtons TcxCustomButton.Click
005fb508 +010 ItoChart.exe Vcl.StdCtrls TCustomButton.CNCommand
00a1bdbd +02d ItoChart.exe cxButtons TcxCustomButton.CNCommand
005d6d2e +2be ItoChart.exe Vcl.Controls TControl.WndProc
005db913 +63b ItoChart.exe Vcl.Controls TWinControl.WndProc
005fa6a4 +06c ItoChart.exe Vcl.StdCtrls TButtonControl.WndProc
00a1bd34 +078 ItoChart.exe cxButtons TcxCustomButton.WndProc
005d6968 +024 ItoChart.exe Vcl.Controls TControl.Perform
005dba77 +023 ItoChart.exe Vcl.Controls DoControlMsg
005dc503 +00b ItoChart.exe Vcl.Controls TWinControl.WMCommand
005d6d2e +2be ItoChart.exe Vcl.Controls TControl.WndProc
7746c66b +04b ntdll.dll KiUserCallbackDispatcher
005d6d2e +2be ItoChart.exe Vcl.Controls TControl.WndProc
005db913 +63b ItoChart.exe Vcl.Controls TWinControl.WndProc
00845758 +1a0 ItoChart.exe cxControls TcxControl.WndProc
008989b5 +0a5 ItoChart.exe cxContainer TcxContainer.WndProc
005daee0 +02c ItoChart.exe Vcl.Controls TWinControl.MainWndProc
0054d4f8 +014 ItoChart.exe System.Classes StdWndProc
7746c66b +04b ntdll.dll KiUserCallbackDispatcher
76fabc52 +132 USER32.dll SendMessageW
76fa7af8 +088 USER32.dll CallWindowProcW
005dba22 +0e6 ItoChart.exe Vcl.Controls TWinControl.DefaultHandler
00a1b766 +01a ItoChart.exe cxButtons TcxCustomButton.DefaultHandler
005d76f0 +010 ItoChart.exe Vcl.Controls TControl.WMLButtonUp
005d6d2e +2be ItoChart.exe Vcl.Controls TControl.WndProc
005db913 +63b ItoChart.exe Vcl.Controls TWinControl.WndProc
005fa6a4 +06c ItoChart.exe Vcl.StdCtrls TButtonControl.WndProc
00a1bd34 +078 ItoChart.exe cxButtons TcxCustomButton.WndProc
005daee0 +02c ItoChart.exe Vcl.Controls TWinControl.MainWndProc
0054d4f8 +014 ItoChart.exe System.Classes StdWndProc
76fc79cb +00b USER32.dll DispatchMessageW
006e9863 +0f3 ItoChart.exe Vcl.Forms TApplication.ProcessMessage
006e98a6 +00a ItoChart.exe Vcl.Forms TApplication.HandleMessage
006e9bd9 +0c9 ItoChart.exe Vcl.Forms TApplication.Run
0238023b +03b ItoChart.exe ItoChart 33 +3 initialization
76888482 +022 KERNEL32.DLL BaseThreadInitThunk

Comments

  • After doing some investigation I finally found a way to bypass the problem.
    Reportbuilder always complained about missing class definition from one of the apps forms.
    When I changed TcxPageControl to TPageControl it even complained on that component.
    That form carrying the component was named 'PPForm'.
    When I change the name to anything else, for example to 'P1PForm', the problem is gone.
    The Name 'PPForm' seems to cause some clash inside Reportbuilder.
  • Hi Gerhard,

    I'm sorry but I'm unsure how this is a ReportBuilder issue :).

    TcxPageControl is a DevExpress component, it does not relate to ReportBuilder in any way and is not used or referenced by ReportBuilder. The Delphi component TPageControl is only used once in the entire product for the AutoSearch Dialog (in very rare cases). Also "PPFORM" is not something we use in our code either (performing a "Find in Files" on our entire source base shows this).

    My initial guess is that you have a corrupted form or datamodule definition that perhaps is referencing a component that no longer exists. You might try viewing this as text and see if you can find an issue.

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
Sign In or Register to comment.