Solved

Delivering Delphi Component that works Design Time Only ?

Posted on 2010-11-26
9
443 Views
Last Modified: 2012-05-10
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
0
Comment
Question by:Looking_4_Answers
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 32

Expert Comment

by:ewangoya
ID: 34219264
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
 
LVL 25

Expert Comment

by:epasquier
ID: 34220169
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
 

Author Comment

by:Looking_4_Answers
ID: 34220244
"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
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 25

Expert Comment

by:epasquier
ID: 34220274
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
 

Author Comment

by:Looking_4_Answers
ID: 34220480
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
 
LVL 24

Expert Comment

by:jimyX
ID: 34220846
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
 
LVL 25

Accepted Solution

by:
epasquier earned 500 total points
ID: 34222778
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
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 34224430
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
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 34224437
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

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …

785 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question