Delphi XE中Delphi TChromeTabs无法正常工作

3
所以我使用Delphi XE,想要安装TChromeTabs(http://www.easy-ip.net/tchrometabs.html)或者(https://github.com/norgepaul/TChromeTabs),因为它似乎可以完成我需要的功能。
首先,该组件没有Delphi XE包,所以我尝试使用为XE2构建的包。然而,在出现错误时,我尝试了为Delphi 7构建的包,结果相同。
我的意思是,组件的安装非常顺利,组件显示在我的控件面板上,但如果我想将组件拖放到我的表单上,我会收到地址00000000的访问冲突错误。详细信息如下:
[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

我不知道该怎么处理这个问题... 如果我卸载XE2包并安装Delphi 7包,则会出现相同的错误。似乎一切都始于Tee包...但我可能是错的。
为了使组件能够正常工作并且能够使用它,我应该做什么呢?

1
这里可能有一些信息:http://www.teechart.net/support/viewtopic.php?f=3&t=12346 - LU RD
是的,我现在看到了,这个组件TrkSmartTabs(Klever)也存在同样的问题,看起来很相似...也许它们互相启发了...http://rmklever.com/?p=273(在评论部分有很多关于Delphi XE的抱怨-特别是GDI +库似乎会搞砸事情) - user1137313
1
也许作者可以帮忙,@norgepaul - LU RD
我成功地通过重命名实际的GDI +单元,并修改组件引用的单元来指向新的GDI +单元名称,使其正常工作。我想知道组件的创建者为什么没有想到这一点?我该如何处理这个问题?如果需要,LU RD可以将您的评论转换成答案,我会接受它。 - user1137313
请随意将其作为您自己的答案。在这里,自我回答问题是完全可以的。请参阅http://stackoverflow.com/help/self-answer。 - LU RD
1个回答

1
好的,解决方案如下:
1. 重命名组件文件夹中 GDIPlus 子文件夹中的文件 GDIPAPI.pas、GDIPObj.pas 和 GDIPUtils.pas。我通过在文件名后添加 x 来进行重命名。 因此,最终文件名为 GDIPAPIx.pas、GDIPObjx.pas 和 GDIPUtilsx.pas。
2. 编辑这些 pas 文件,将单元名称更改为新名称,并更新 uses 子句以指向新的单元名称。 (我还将更改后的 pas 文件添加到了我的 Lib 文件夹中)
3. 编译、构建并安装组件。
如果跳过以上任何步骤,则很可能会出现各种编译错误,因为这些单元可能仍然引用着您的 Lib 文件夹中已经存在的原始 GDIP 文件(通常是由 Tee 放置在那里)。所以请确保使用新名称替换单元内的所有引用。
我还认为,如果只重命名前两个文件,也可能会起作用,但我没有心情再进行任何测试。
现在它工作正常。我可以将控件添加到我的表单中,而且我可以运行我的简单测试程序,没有任何错误。
如果创建者@norgepaul能够解决这个问题并为Delphi XE创建dpk文件,那将是非常棒的。

我没有XE,但是如果您想发送任何修复程序,请告诉我。只需在错误跟踪器中添加问题即可,我会在有时间时立即处理。 - norgepaul
请您不吝赐教,给我提供一个问题和可能解决方案的发布链接。我不知道您所说的错误跟踪器在哪里可以找到。 - user1137313
然而,像我这样的问题的解决方案只是将GDI+单元重命名为其他库未使用的名称,因此不要让它们具有与现在相同的名称,因为它们与另一个具有相同单元名称但内容略有不同的库发生冲突。因此,只需将文件和引用重命名为新单元即可,一切都会很好。您不需要XE版本才能这样做。这只是一个简单的文件重命名问题+一些uses子句编辑,以指向新单元。没什么大不了的。 - user1137313

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接