Delivering Delphi Component that works Design Time Only ?

Delphi 2010

I am writing a simple component for someone. I want to deliver it to them for testing purposes, but i want it to work in Design Time Only

How do i do this?

Please describe the steps please

thanks
Looking_4_AnswersAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
epasquierConnect With a Mentor Commented:
design time is another issue. And one that is easily checked with the test :
csDesigning in ComponentState

Looking4Answers : just put all of it in a package, compile it and distribute .BPL and .DCU
0
 
Ephraim WangoyaCommented:
add this function to your component
uses
  Windows;

function IsInIDE: Boolean;
begin
  Result := (FindWindow('TAppBuilder', nil) > 0) and (DebugHook <> 0);
end;

in the initialization section

initialization
  if not IsInIDE then
  begin
    MessageBox(0, 'Can only run in Delphi', 'Error', MB_OK);
    Application.Terminate; //Halt
  end;
0
 
epasquierCommented:
The first test will tell you that Delphi is loaded, but not that your application is running from Delphi.

That is where the check of DebugHook global variable comes into play, that Delphi sets when integrated debugging is activated and you launch the application from Delphi.

If Delphi integrated debugging is deactivated, then there is no difference between your application launched from Delphi and from explorer while delphi is already loaded.

0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
Looking_4_AnswersAuthor Commented:
"That is where the check of DebugHook global variable comes into play, that Delphi sets when integrated debugging is activated and you launch the application from Delphi.

If Delphi integrated debugging is deactivated, then there is no difference between your application launched from Delphi and from explorer while delphi is already loaded."

Please Elaborate......maybe with code?
0
 
epasquierCommented:
ewangoya posted a code without explanation, I posted an explanation without code : both work together.

FindWindow('TAppBuilder', nil) >0  => Delphi is loaded somewhere

(DebugHook <> 0)  => that application is running under a debugger.

Both condition at the same time => most certainly that application has been launched from delphi and is being debugged
0
 
Looking_4_AnswersAuthor Commented:
Ok, ill try that part of it....but, I do not want to delliver the code for the compoenent.  How do i deliever just the compiled stuff. Package, DCU's, etc
0
 
jimyXCommented:
I have read sometime back that the Register procedure is only called in design mode. You can define a flag in your module and have your register procedure set that flag.  If that flag is clear in your constructor then you are not in design mode.
0
 
Geert GOracle dbaCommented:
if you want the absolute certain way :

within your component you could find if you have access to the IDE
basically you can query the IDE with IOTA (Open Tools Api) interfaces from within your component

uses ToolsApi;

function CheckInIde: Boolean;
begin
  Result := BorlandIdeServices <> nil;
end;

I think you need to add DesignEditors to your uses packages of your component
Don't have access to delphi here, i could test on monday

If you are looking for more such info, look for IOTA Delphi in google :)

0
 
Geert GOracle dbaCommented:
here is a simple wizard by Allen:
http://edn.embarcadero.com/article/20419

you even get access to the debugger ...
you could even post a message to the debugger window using IOTADebuggerServices;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.