Log On
Embarcadero Home
Watch, Follow, &
Connect with Us
Share This
QualityCentral
Communities
Articles
Blogs
Resources
Downloads
Help
QualityCentral
Delphi-BCB
ActiveX
AddOn
Bold
CodeGuard
Compatibility
Compiler
C++
Delphi
CORBA
Database
Databinding
Debugger
Demos
Documentation
Enterprise
FireMonkey
IDE
Install
International
Internet
Linker
MFC Support
Midas
Modeling
MTS
Resourcing
RTL
SOAP
TASM/TD
Tools CL
VCL
VCLX
You are not logged in.
Help
Print
Public Report
Report From:
Delphi-BCB/Compiler
[ Add a report in this area ]
Report #:
6130
Status:
Reported
Frame can't be created dynamically when contains PageControl
Project:
C++Builder
Build #:
6.0
Version:
6.0
Submitted By:
xiao zhen
Report Type:
Crash / Data loss / Total failure
Date Reported:
10/6/2003 2:28:50 AM
Severity:
Critical / Show Stopper
Last Updated:
3/2/2011 6:51:59 AM
Platform:
All versions
Internal Tracking #:
Resolution:
None
Resolved in Build:
:
None
Duplicate of:
None
Voting and Rating
Overall Rating:
(1 Total Rating)
4.00 out of 5
Total Votes:
None
Description
hi,
I think I found a BUG in C++ Builder6. try following steps.
1. use Dll wizard creat a dll project named "test.dll"
2. use __declspec(dllexport) to export an function, for example "SetupDll"
3. in the body of SetupDll, reference an exported object in VCL60.bpl, such
as Forms::Screen, for example
void SetupDll(void)
{
Screen->MonitorCount;
}
4. Create a new project named "testprj"
5. add test.lib to project testprj
6. add code "SetupDll();" to a function, force testprj.exe link with
"test.dll";
7. new a frame "Frame1", put a page control "PageControl1" in it, and new a
tab sheet "TabSheet1" in "PageControl1";
8. put a button "Button1" in the main form of testprj;
9. write the OnClick function of Button1 as following:
void __fastcall TForm1::Button1Click(TObject * Sender)
{
TFrame1 *f1 = new TFrame1(this);
f1->Parent = this;
f1->Visible = true;
}
10. Build test.dll and testprj.exe
11. Run testprj.exe, there is a window with a button named "button1", click
the button, you will get an
exception EInvalidOperation, message is "Frame1 has no parent window".
I had tested for a long time, following is some phenonmenion:
a. if test.dll or testprj.exe is not built with option "Package|build with
runtime package", no exception thrown.
b. if frame is not created dynamically, no exception thrown,
c. if no tab sheet control in frame, no exception thrown
d. if no object in VCL60.bpl was referenced in test.dll, no exception
thrown.
According to those evidents, I think this is a BUG in c++builder 6.0
Steps to Reproduce:
None
Workarounds
None
Attachment
None
Comments
Robert Cerny at 10/7/2003 2:55:47 AM
-
IIRC, that's a known problem in Delphi too, when you build a project with runtime packages and statically imported DLL that also uses packages. No fixes so far, just a workaround: don't do this, IOW bind the DLL dynamically.
xiao zhen at 10/8/2003 5:09:48 AM
-
Does not Borland believe it is a problem need to be resolved?
if so, I think Borland company maybe really need be involved by M$.
Robert Cerny at 10/9/2003 8:22:21 AM
-
No, you'd better use the workaround
View Your Reports
Search
Server Response from: ETNACODE01
Developer Tools
Blackfish SQL
C++Builder
Delphi
FireMonkey
Prism
InterBase
JBuilder
J Optimizer
HTML5 Builder
3rdRail & TurboRuby
Database Tools
Change Manager
DBArtisan
DB Optimizer
ER/Studio
Performance Center
Rapid SQL
Technical Articles
Tutorials
White Papers
Press Releases
Newsletters
Add Content (GetPublished)
Audio
Audio & Video
Video
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Tags
Technology Partners
Downloads
Free Trials
Registered User Downloads
Beta Programs
Add Content (GetPublished)
Articles
Blogs
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Member Services
About
Connect with Us