Some results of my investigation:
Forms and I think all debugger routines exsists in demo exe. You can enable hidden Debugger submenu in the Main menu just by editing resources. Set Visible to True (it's BCB 5 application), thats all. But debugger still remain not active at any time. Then I found some magic dword 0x0054BA00, setting it <>0 enables something - you can setup process, debugger, view breakpoints list, watch list etc. but when you try to open Debugger window or start process program crashes. I think that dword must be part of some structure and must contain some address. I tried to imagine what address it could be and wrote a script to find possible addresses (it is not perfect I think ;-) :
static main()
{
auto i,a,filename,filehandle;
a=1;
filename=AskFile(1,"*.*","File for saving list of addresses"

;
filehandle=fopen(filename,"wt"

;
Message("\nList of addresses:"

;
fprintf(filehandle,"\nList of addresses:"

;
for(i=0x00401000; i<0x005bff70; i++) i is searched address
{
if (Dword(i+0x0c)<0x00401000) a=0; down range of the code
if (Dword(i+0x0c)>0x005285b1) a=0; upper range of the code
if (Dword(i+0x28)>0x000000ff) a=0;
if (Dword(i+0x3c)<0x00401000) a=0;
if (Dword(i+0x3c)>0x005285b1) a=0;
if (Dword(i+0x4c)<0x00401000) a=0;
if (Dword(i+0x4c)>0x005285b1) a=0;
if (Dword(i+0x54)<0x00401000) a=0;
if (Dword(i+0x54)>0x005285b1) a=0;
if (Dword(i+0x5c)<0x00401000) a=0;
if (Dword(i+0x5c)>0x005285b1) a=0;
if (Dword(i+0x60)<0x00401000) a=0;
if (Dword(i+0x60)>0x005285b1) a=0;
if (Dword(i+0x64)<0x00401000) a=0;
if (Dword(i+0x64)>0x005285b1) a=0;
if (Dword(i+0x68)<0x00401000) a=0;
if (Dword(i+0x68)>0x005285b1) a=0;
if (Dword(i+0x6c)<0x00401000) a=0;
if (Dword(i+0x6c)>0x005285b1) a=0;
if (Dword(i+0x70)<0x00401000) a=0;
if (Dword(i+0x70)>0x005285b1) a=0;
if (Dword(i+0x74)<0x00401000) a=0;
if (Dword(i+0x74)>0x005285b1) a=0;
if (Dword(i+0x78)<0x00401000) a=0;
if (Dword(i+0x78)>0x005285b1) a=0;
if (Dword(i+0x7c)<0x00401000) a=0;
if (Dword(i+0x7c)>0x005285b1) a=0;
if (Dword(i+0x84)<0x00401000) a=0;
if (Dword(i+0x84)>0x005285b1) a=0;
if (Dword(i+0x88)<0x00401000) a=0;
if (Dword(i+0x88)>0x005285b1) a=0;
if (Dword(i+0x8c)<0x00401000) a=0;
if (Dword(i+0x8c)>0x005285b1) a=0;
if (a==1) Message("\n%08X function %08X %08X",i,Dword(i+0x3C),Dword(i+0x8C));
if (a==1) fprintf(filehandle,"\n%08X function %08X %08X",i,Dword(i+0x3C),Dword(i+0x8C));
a=1;
}
fclose(filehandle);
}
The conditions of comparing is that there must be addresses of some functions at certain offsets to the address we trying to find. I found about 64 addresses that may satisfy the conditions, here is the result
List of addresses:
00495438 function 00512840 nullsub
00495628 function 00512840 nullsub
00495708 function 004957D8 n
00495728 function 00512840 nullsub
004973EC function 00512840 nullsub
00497614 function 00512840 nullsub
004976F0 function 00512840 nullsub
004977E0 function 00512840 nullsub
00498B9C function 00512840 nullsub
00498C84 function 00512840 nullsub
00498D50 function 00512840 nullsub
00498E18 function 00512840 nullsub
0049AF0C function 00512840 nullsub
0049B148 function 00512840 nullsub
0049D258 function 00512840 nullsub
0049DABC function 00512840 nullsub
0049E2E4 function 00512840 nullsub
0049ECF0 function 00512840 nullsub
0049F80C function 00512840 nullsub
0049FFE0 function 00512840 nullsub
004A0084 function 004A01DC n
004A01E4 function 004A0310 n
004A0A5C function 00512840 nullsub
004A1A98 function 00512840 nullsub
004A2A28 function 00512840 nullsub
004A2B1C function 00512840 nullsub
004A2C18 function 00512840 nullsub
004A9898 function 00512834 __fastcall System::TObject::SafeCallException(System::TObject *,void *) proc near
004A989C function 00512840 nullsub
004A9944 function 004A9A0E n
004A9E48 function 00512840 nullsub
004AA120 function 00512840 nullsub
004B0434 function 004B051C n
004B0454 function 00512840 nullsub
004B0570 function 004B0660 n
004B0590 function 00512840 nullsub
004B06B0 function 004B0794 n
004B06C0 function 004B0788 n
004B06D0 function 00512840 nullsub
004B9834 function 004B998C n
004BA1A4 function 004BA2E8 n
004BA1C4 function 00512840 nullsub
004BAF84 function 004BD4B4 __fastcall Forms::TCustomForm::AfterConstruction(void) proc near
004BB098 function 004BB23C n
004BB0A4 function 004BB1F0 n
004BB0A8 function 004BB228 n
004BB2B4 function 004BB37C n
004BB36C function 004BB458 n
004C5C1C function 00512840 nullsub
004C5E9C function 004C600C n
004C5EA8 function 004C5FCC n
004C6024 function 00512840 nullsub
004C6A68 function 00512840 nullsub
004C7724 function 00512840 nullsub
004CD0B0 function 00512840 nullsub
004CD1EC function 00512840 nullsub
004CEB18 function 004BD4B4 __fastcall Forms::TCustomForm::AfterConstruction(void) proc near
004CF888 function 004CF918 n
004CF9AC function 00512840 nullsub
004CFAE0 function 00512840 nullsub
004D05F8 function 004D06C4 n
004D0608 function 00512840 nullsub
004D0EF4 function 004D1028 n
004D102C function 004D10D0 n
004D103C function 00512840 nullsub
004D1100 function 00512840 nullsub
004DFD98 function 00512840 nullsub
004E14F0 function 004E15A8 n
004E26A0 function 00512840 nullsub
004E3694 function 004E37E0 n
004E3698 function 004E381E n
004E3850 function 00512840 nullsub
004E44DC function 00512840 nullsub
004E5A4C function 004F6048 __fastcall Comctrls::TCustomListView::CMDrag(Controls::TCMDrag &

proc near
004E5B14 function 00512840 nullsub
004E69F4 function 00512840 nullsub
004E6A9C function 004E6C08 n
004E73E8 function 004F9F8C __fastcall Comctrls::TToolBar::WMEraseBkgnd(Messages::TWMEraseBkgnd &

proc near
004E7EE4 function 00512840 nullsub
004EFA7C function 00512840 nullsub
004F2528 function 00512840 nullsub
004FD470 function 004FCBB8 n
004FD6C4 function 00512840 nullsub
004FD7C0 function 00512840 nullsub
004FE058 function 004FCC58 n
005075FC function 00512840 nullsub
0052B9F0 function 004A9964 n
0052B9F4 function 005060D0 SomeFunction
0053F7A8 function 005060D0 SomeFunction
0054A6E0 function 004D0F14 n
0054A6E4 function 005060D0 SomeFunction
0054A850 function 005060D0 SomeFunction
0054EB48 function 005060D0 SomeFunction
first address is that magic value, second is the value at 03Ch offset to the first, it is an address called somewhere as a function and comments are is there any real function at that address (n means no function). I checked only one offset - 03Ch, so there are 15 more to check. Could somebody take a look may be I'm doing something wrong. And if here is some Delphi/BCB gurus their advice might be helpful.
P.S. May be my explanation is not clear enough, so any questions?
P.P.S. I forgot - all addresses is for +Skamer's internal release.