Delphi TChromeTabs not working in Delphi XE

So I am using Delphi XE and I wanted to install TChromeTabs ( http://www.easy-ip.net/tchrometabs.html ) or ( https://github.com/norgepaul/TChromeTabs ) as it seems to do then , what I need.

First of all, the component does not have a Delphi XE package, so I decided to try using a package created for XE2, and then when it gave me an error, I tried a package created for Delphi 7. Same result.

I mean setting the component worked pretty well, the component is displayed on my palette, but if I want to drop the component on my form, I get an AccessViolation at 00000000. The details say:

[422A1207]{Tee9150.bpl } Gdipapi.TGdiplusBase.NewInstance + $B
[5003A753]{rtl150.bpl  } System.@ClassCreate (Line 12121, "System.pas" + 5) + $0
[422B3CE2]{Tee9150.bpl } Gdipobj.TGPPen + $E
[11AE5CF5]{ChromeTabs_XE2_R.bpl} ChromeTabsControls.TBaseChromeButtonControl.GetButtonPen (Line 1897, "ChromeTabsControls.pas" + 2) + $27
[11AE22EF]{ChromeTabs_XE2_R.bpl} ChromeTabsControls.TAddButtonControl.GetPolygons (Line 481, "ChromeTabsControls.pas" + 1) + $4
[50285877]{vcl150.bpl  } Controls.TWinControl.GetClientRect (Line 11931, "Controls.pas" + 1) + $9
[5027BF34]{vcl150.bpl  } Controls.TControl.GetClientWidth (Line 5661, "Controls.pas" + 1) + $6
[11AE1F06]{ChromeTabs_XE2_R.bpl} ChromeTabsControls.TBaseChromeTabsControl.ContainsPoint (Line 318, "ChromeTabsControls.pas" + 3) + $7
[11AEBB0F]{ChromeTabs_XE2_R.bpl} ChromeTabs.TCustomChromeTabs.HitTest (Line 1777, "ChromeTabs.pas" + 9) + $B
[11AE9D3B]{ChromeTabs_XE2_R.bpl} ChromeTabs.TCustomChromeTabs.SetControlDrawStates (Line 819, "ChromeTabs.pas" + 6) + $28
[11AEF5F2]{ChromeTabs_XE2_R.bpl} ChromeTabs.TCustomChromeTabs.Resize (Line 3344, "ChromeTabs.pas" + 9) + $6
[50283788]{vcl150.bpl  } Controls.TWinControl.WMSize (Line 10336, "Controls.pas" + 20) + $6
[5027DF6C]{vcl150.bpl  } Controls.TControl.WndProc (Line 7074, "Controls.pas" + 91) + $6
[50037560]{rtl150.bpl  } System.@FreeMem (Line 3768, "System.pas" + 20) + $0
[5003C0B0]{rtl150.bpl  } System.@UStrClr (Line 16968, "System.pas" + 14) + $0
[20B03B6E]{coreide150.bpl} PropInsp.TPropertyInspector.DrawNamePair (Line 731, "PropInsp.pas" + 49) + $19
[5003C167]{rtl150.bpl  } System.@WStrArrayClr (Line 17237, "System.pas" + 9) + $0
[50282830]{vcl150.bpl  } Controls.TWinControl.WndProc (Line 9831, "Controls.pas" + 144) + $6
[5025E975]{vcl150.bpl  } Graphics.TCanvas.SetHandle (Line 4170, "Graphics.pas" + 6) + $6
[50282830]{vcl150.bpl  } Controls.TWinControl.WndProc (Line 9831, "Controls.pas" + 144) + $6
[500AFA64]{rtl150.bpl  } Classes.StdWndProc (Line 13491, "Classes.pas" + 8) + $0
[11AF010E]{ChromeTabs_XE2_R.bpl} ChromeTabs.TCustomChromeTabs.WndProc (Line 3716, "ChromeTabs.pas" + 10) + $4
[50281ED0]{vcl150.bpl  } Controls.TWinControl.MainWndProc (Line 9552, "Controls.pas" + 3) + $6
[500AFA64]{rtl150.bpl  } Classes.StdWndProc (Line 13491, "Classes.pas" + 8) + $0
[5003ABE2]{rtl150.bpl  } System.TMonitor.Exit (Line 12523, "System.pas" + 9) + $7
[5003AC1B]{rtl150.bpl  } System.TMonitor.Exit (Line 12537, "System.pas" + 2) + $7
[5009E0CE]{rtl150.bpl  } Classes.TInterfaceList.GetCount (Line 4147, "Classes.pas" + 5) + $9
[50040A33]{rtl150.bpl  } System.TInterfacedObject._Release (Line 28243, "System.pas" + 1) + $3
[50040950]{rtl150.bpl  } System.@IntfClear (Line 28061, "System.pas" + 10) + $0
[51B1DD1E]{vcldesigner150.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3307, "VCLSurface.pas" + 186) + $28
[50281129]{vcl150.bpl  } Controls.TWinControl.Broadcast (Line 8982, "Controls.pas" + 1) + $3
[502811A9]{vcl150.bpl  } Controls.TWinControl.NotifyControls (Line 9010, "Controls.pas" + 9) + $2
[5003AEBE]{rtl150.bpl  } System.TMonitor.TryEnter (Line 12708, "System.pas" + 10) + $0
[5003AA38]{rtl150.bpl  } System.TMonitor.Enter (Line 12406, "System.pas" + 4) + $2
[50282830]{vcl150.bpl  } Controls.TWinControl.WndProc (Line 9831, "Controls.pas" + 144) + $6
[502532CF]{vcl150.bpl  } Windows.CreateWindowEx (Line 35262, "windows.pas" + 2) + $2A
[502815D4]{vcl150.bpl  } Controls.TWinControl.CreateWindowHandle (Line 9225, "Controls.pas" + 1) + $2A
[11AED02A]{ChromeTabs_XE2_R.bpl} ChromeTabs.TCustomChromeTabs.CreateWindowHandle (Line 2291, "ChromeTabs.pas" + 1) + $2
[502814D6]{vcl150.bpl  } Controls.TWinControl.CreateWnd (Line 9202, "Controls.pas" + 45) + $A
[5028191A]{vcl150.bpl  } Controls.TWinControl.CreateHandle (Line 9340, "Controls.pas" + 3) + $4
[50281BE0]{vcl150.bpl  } Controls.TWinControl.UpdateShowing (Line 9463, "Controls.pas" + 7) + $11
[50281C0E]{vcl150.bpl  } Controls.TWinControl.UpdateShowing (Line 9466, "Controls.pas" + 10) + $10
[50281D88]{vcl150.bpl  } Controls.TWinControl.UpdateControlState (Line 9510, "Controls.pas" + 21) + $3
[50280FE2]{vcl150.bpl  } Controls.TWinControl.InsertControl (Line 8903, "Controls.pas" + 25) + $2
[5027C54C]{vcl150.bpl  } Controls.TControl.SetParent (Line 5873, "Controls.pas" + 9) + $4
[502877B9]{vcl150.bpl  } Controls.TWinControl.SetParent (Line 13156, "Controls.pas" + 5) + $5
[51B18803]{vcldesigner150.bpl} VCLSurface.TControlItem.SetParent (Line 897, "VCLSurface.pas" + 1) + $19
[2107A0DF]{designide150.bpl} ComponentDesigner.TComponentRoot.DoCreateComponent (Line 2411, "ComponentDesigner.pas" + 99) + $8
[2107F022]{designide150.bpl} ComponentDesigner.TComponentRoot.CreateCurrentComponent (Line 4384, "ComponentDesigner.pas" + 2) + $32
[2109636E]{designide150.bpl} Surface.TDesignSurface.CreateItem (Line 187, "Surface.pas" + 1) + $11
[2104E6BE]{designide150.bpl} Designer.TDesigner.DoDragCreate (Line 764, "Designer.pas" + 1) + $F
[2104EE98]{designide150.bpl} Designer.TDesigner.DragEnd (Line 928, "Designer.pas" + 19) + $3
[21051474]{designide150.bpl} Designer.TDesigner.MouseUp (Line 1710, "Designer.pas" + 1) + $2
[51B1CCA1]{vcldesigner150.bpl} VCLSurface.MouseEvent (Line 2908, "VCLSurface.pas" + 45) + $11
[5003AC1B]{rtl150.bpl  } System.TMonitor.Exit (Line 12537, "System.pas" + 2) + $7
[51B1D87B]{vcldesigner150.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3169, "VCLSurface.pas" + 48) + $6
[500AFA64]{rtl150.bpl  } Classes.StdWndProc (Line 13491, "Classes.pas" + 8) + $0
[5003A336]{rtl150.bpl  } System.@IsClass (Line 11370, "System.pas" + 1) + $8
[5027DCDB]{vcl150.bpl  } Controls.TControl.WndProc (Line 6987, "Controls.pas" + 4) + $21
[502820C3]{vcl150.bpl  } Controls.TWinControl.IsControlMouseMsg (Line 9608, "Controls.pas" + 1) + $9
[50282830]{vcl150.bpl  } Controls.TWinControl.WndProc (Line 9831, "Controls.pas" + 144) + $6
[5034FB28]{vcl150.bpl  } Forms.TCustomForm.WndProc (Line 3961, "Forms.pas" + 191) + $5
[50281ED0]{vcl150.bpl  } Controls.TWinControl.MainWndProc (Line 9552, "Controls.pas" + 3) + $6
[500AFA64]{rtl150.bpl  } Classes.StdWndProc (Line 13491, "Classes.pas" + 8) + $0
[503975EB]{vcl150.bpl  } AppEvnts.TMultiCaster.GetAppEvents (Line 653, "AppEvnts.pas" + 1) + $5
[50358AF7]{vcl150.bpl  } Forms.TApplication.ProcessMessage (Line 9760, "Forms.pas" + 23) + $1
[50358B3A]{vcl150.bpl  } Forms.TApplication.HandleMessage (Line 9790, "Forms.pas" + 1) + $4
[50358E65]{vcl150.bpl  } Forms.TApplication.Run (Line 9927, "Forms.pas" + 26) + $3

      

I have no idea how to deal with this ... Same error appears if I uninstall the XE2 package and install the Delphi 7 package. Everything seems to start with the Tee package somehow ... I may be wrong

What should I do to get this to work correctly and be able to use the component?

+3


source to share


1 answer


So the solution would be:

  • rename the GDIPAPI.pas, GDIPObj.pas and GDIPUtils.pas files located in the component folder to the GDIPlus subfolder. I renamed them by adding an x ​​tail. So I ended up with GDIPAPIx.pas, GDIPObjx.pas and GDIPUtilsx.pas

  • edit the pas files and replace the device name with the new name and update the uses clauses to point to the new unit names. (I also added the modified pas files to the Lib folder)

  • Compile, build and install the component.

If you skip any of the above steps, you will most likely get all sorts of compilation errors caused by the fact that the blocks probably still preserve the original GDIP files located in your Lib folder already (Tee most likely hosted there ). So don't forget to replace all repetitions within units with new names.



I also think it might work if I only rename the first 2 files, but I'm not in the mood for any testing.

It works fine now. I can add a control to my form, and I can easily run a simple test program without errors.

It would be great if the creator: @norgepaul resolves this issue and creates a dpk for delphi XE too.

+1


source







All Articles