Delphi OpenTools API Live Chat Transcript from Nov. 18th, 1999

By: Christine Ellis

Abstract: Delphi OpenTools API Live Chat Transcript from Nov. 18th, 1999

Delphi 5 Live Chat on Thursday, November 18, 1999

Subject: OpenTools API

Chat Formatting Conventions

chatter 1

This is a question asked by a chat participant

speaker 1

This is an answer or message posted by a speaker

chatter 2

This is another question asked by a chat participant

speaker 2

This is another answer or message posted by a speaker

editor

This is an editorial comment

Chat Transcript from Thursday, November 18, 1999

Please note: Some of the text for this chat has been edited for clarity.

Chat User

Message

cellis

Welcome to today's moderated chat on the Delphi OpenTools API!
Your moderator for today's event is:
David Intersimone - VP of Dev. Relations.
The speaker(s) present at today's Delphi chat are:
Allen Bauer - Delphi R&D
John Kaster - Developer Relations
Robert Kozak - Delphi R&D

cellis

Before we start with the chat, our lawyers ask us to post the following message: "Forward-looking statements, if any, made during this online discussion, including, but not limited to those concerning Inprise's future financial performance, product availability dates, and the potential features of or benefits to be derived from the company's products, will involve a number of uncertainties and risks, and actual events or results may differ materially. "Factors that could cause actual events or results to differ materially include, among others, the following: difficulties in integrating the operations and technology of Visigenic Software or other companies or technologies which the company may acquire, possible disruptive effects of organizational or personnel changes, shifts in customer demand, market acceptance of the company's new or enhanced products, delays in scheduled product availability dates, actions or announcements by competitors, software errors, general business conditions, and market growth rates in the client/server and Internet software markets, and other factors described in the company's S.E.C. reports on forms 10-K, 10-Q, 8-K, and the Inprise. . .

cellis

This auditorium is currently quiet. Chat has been disabled to keep the noise down. You will not be able to see other users also logged into this auditorium. To ask a question, use /ask and type in your question.

whawke

Will there be an equivalent OpenTools API for Kylix?

jkaster

There will be an OpenTools API and any skills you learn from the current OTA should be very applicable to the Kylix one.

overcash

From Ray Lischner: "I'd like to know if the Tools API will change in Kylix?"

abauer

Yes. How it changes has not yet been determined.

GNiessen

When will last week's transcript be out?

cellis

The transcript for last week's chat on ADOExpress is live and available on our community site.

bugger

How does one get notification of every single keypress in a partial keybinding?

abauer

That, by definition is currently not possible. The best you could probably do is to assign a default handler to the 'Editor' keyboard and trap all keys that are *not* already handled.

gnunn

When will the OpenTools API be officially documented and included in the help file that ships with Delphi?

abauer

Over the next year, I will be working with publications and others to enhance the current dearth of documentation.

gnunn

Any plans to shift the OpenTools API to COM?

jkaster

For simplicity and performance, we don't plan to implement COM interfaces for OTA. We also pass in Delphi types, so that would be less convenient.

whawke

I want to create an Addin window that will dock and behave like Delphi docking windows (example Project Manager). I posted the question to the newsgroup and someone said they would be posting sample source code to CodeCentral but I haven't seen it yet. How do I create an Addin with docking windows? TIA

RobertKozak

Great question. As some of you know, I used to be an active OpenTools developer and experimenter before I came to work here. I tried to figure this out myself but it didn't work right and was klunky. Now that I am here, I see that it isn't difficult at all, but some interfaces must be cleaned up and let out the door. I don't have a time frame for you yet, but I will post something to the CodeCentral when I can.

bugger

What is the easiest way to get notification that a new edit view has been created?

abauer

Use the IOTAEditorNotifier interface. When a new edit buffer is created, attach this notifier and wait for this notification.

Jeremiah

Are there any plans to offer a tutorial on how to use the OpenTools API?

jkaster

We do have OTA examples that ship with Delphi, and Charlie and I would like to do some additional articles. Even better, if someone wants to send us articles on OTA, we'll get them published on the community site.

overcash

Will there be more examples of using the new OTA style with BCB5?

abauer

Yes. We have plans to provide easier access to the OTA interfaces by using some template classes. We also plan on translating several of the current Delphi 5 examples to C++. The great thing about the Tools API is that it does not matter if you use Delphi or C++, your addins can be made to work with either IDE.

cellis

This auditorium is currently quiet. Chat has been disabled to keep the noise down. You will not be able to see other users also logged into this auditorium. To ask a question, use /ask and type in your question.

bugger

FWIW, I have a docking sample: John just needs to get the offline client up - finally.

jkaster

Working on it, but there are other things that need to be done first. It doesn't take THAT long to post something to CodeCentral via the web.

gnunn

Any chance of exposing the Code Explorer information through the OTA in a future version of Delphi?

RobertKozak

Hi, Gerald. This is definately something we will support in an upcoming version. If there are other things you want to see in the OpenTools, let us know.

bugger

Why then is the community site not responsive to offerings of articles?

jkaster

Haven't written the submission system yet. For now, just email articles to me, David I, or Charlie Calvert. We will have a submission system up as soon as possible.

Jeremiah

Are there any licensing issues with using the OTA?

jkaster

Other than buying Delphi or C++ Builder to use it, no :-)

bugger

How does one use IOTAKeyboardDiagnostics?

abauer

This was essentially an interface added during the testing cycle of Delphi for QA. It, however, turns out that it is extremely useful for a developer creating a keyboard binding. This is probably the simplest interface to use. Simply use the code snipet: (BorlandIDEServices as IOTAKeyboardDiagnostics).KeyTracing := True; This will cause all keystrokes to be logged to the message window with both the internal keycode and the equivalent TShortCut value.

CRConrad

As a recent buyer (not yet user...) of D5, I'd like to know if I understood correctly what I picked up somewhere: Is the OpenTools API based on COM now? If so, why? Wasn't that a strategically dumb decision, tying Delphi harder to Windows' proprietary APIs? The old model certainly didn't seem to be hindering add-in producers from creating amazing stuff, so...?

RobertKozak

The OpenTools API is not based on COM, but is very COM-like because of the use of interfaces. This is better as it is not tied to COM and its quite easy to use.

bugger

It is not helpful that IOTAEnvironmentOptions are not persistent. Add method .Store?

abauer

Good suggestion. It is now on the list. Thanks.

Jay S

Are there any third party reference books to the OTA? RTTI?

jkaster

Yes, there are several that discuss it. The most in-depth one is "Hidden Paths of Delphi 3" by Ray Lischner. ISBN 0-9657366-0-1.

overcash

The BCB version of the OTA has traditionally been less stable than its Delphi counterpart. Will the OTA get better treatment in the future in this aspect?

abauer

Yes. Since the products are built in tandem and from the same codebase, this should only get better.

GNiessen

I looked, and I can't find last weeks Chat on the community web site.

cellis

You can find the transcript for last week's ADOExpress chat at http://community.borland.com/article/1,1410,20067,00.html.

AWiggin

We would like our form wizards to be able to dock with the IDE's forms. Is there an API that supports this?

RobertKozak

As I mentioned previously, I will post an example on CodeCentral to show how to get your own forms to dock in the IDE.

RobertKozak

I've been answering questions I forgot to say "Hi" to many of my friends here.

CRConrad

What is the developer team's "vision" of the OpenTools API? Are the experts and add-ins that people make (from DrBob's examples over GExperts to CodeRush) what you had in mind, or are people "missing" something that you had thought they would use it for?

abauer

I, the developer team, am very pleased with the progress many of the third parties have made. There have been many things that I had never envisioned being done. One area that is probably needing more attention is the debugger APIs. There are a lot of things that could be done here with the breakpoints. For instance, an add-in could have implemented in D4 all the new breakpoint actions we added in D5. There is room in this area for further enhancements by third parties.

rhaven

Any plans to make custom Designers easier to create and distribute? Or, more ability to interact (e.g. draw on) the standard Form Designer?

RobertKozak

This is something I would like to see also. :-) This is something we are investigating.

lvermeulen

When will the parser be opened up via OTA?

jkaster

Next Tuesday :-). Seriously, we're considering that as a future enhancement. We've seen many requests and it's on the list. As soon as we publish it, we can't make any changes, so we've been reluctant to publish it until we're sure we like it.

Jeff Cheney

How does the OpenTools API in Delphi relate to the similarly-named API in Borland C 5.02 and is there a migration path?

abauer

Amazing... ;-) Yes, the keyboard binding enahancements were definately modeled after the CScript keybinding stuff in BC 5.02... Why re-invent the wheel?

AWiggin

In regards to #39's answer: I have not been able to access CodeCentral. Can you offer any help on that?

jkaster

Go to http://community.borland.com/codecentral in a browser. If you can't successfully log in, put a message in either the community newsgroup or the CodeCentral newsgroup and I'll follow up with you there.

Matthew999

I have been having problems with the bug tracking page of the Delphi community website. Will this be fixed soon?

jkaster

For now, please use http://www.borland.com/devsupport/bugs/bug_reports.html. The bug reporting system is being worked on.

AWiggin

How does one get notification of when a component/control gets selected under the IDE?

abauer

Currently there is no direct interface via the OTA. I will take that as a suggestion and consider it in a future release.

Jeremiah

Knowing that this is an OTA chat only I will phrase my question very carefully. Is it possible that things like OTA in the INPR tools are what has driven the stock price up to over $7.5 today? ;-) Whoo Hooo Go Borland!! :-

jkaster

Our spreading the news of our Linux support might have something to do with it. See CNN's article at http://cnn.com/TECH/computing/9911/17/comdex.linux.apps.idg/index.html. I'll also be posting a LinuxExpo impressions article by the end of tomorrow.

bugger

I feel that the "it's public, so we cannot change" argument is not valid in the case of the parser.

jkaster

We respectfully disagree.

eberry

Any status on the non-working IOTAProjectOptions settings (most of the compiler options, etc?)

abauer

Cannot comment on when.. except that I'm aware of it and will be investigating it.

lvermeulen

If you open up the parser by Tuesday, I'll be screaming for docs on Wednesday. :-P Can the community site offer help with a community effort in documenting the OTA better?

jkaster

We have some things planned for the community site, but the articles aren't ready yet. I'd be happy to edit articles from other people and get them posted until we have time to produce some.

bugger

Remark: GExperts http://www.gexperts.com/gexperts/ allows for IDE docking starting with D4.

bugger

I would love to see an "abstraction" of file access way beyond IOTAFileSystem - the compiler reads from a stream that the OTA can provide, not necessarily straight from disk.

jkaster

That's a good suggestion.

gnunn

Any plans to add interpreted scripting to the IDE or is OTA likely to remain the only way to extend the IDE?

abauer

No. We already have a very high performance "scripting" language... Pascal. However, making it easier to add these "scripts" is a priority. On the flip-side, there is now enough interfaces exposed that a third party could do it.

AWiggin

We created our own derived Custom Module and returned our own DesignerForm by overriding CreateDesignerForm. Our DesignerForm functioned as expected, except when the form was streamed out to the DFM. Basically none of our components/controls showed up within the DFM. Of course, once we reverted back to allowing the default DesginerForm to be constructed everything works fine. Any suggestions on what we could do to get our controls/componets to stream out correctly??

jkaster

This is a question that needs to be followed up in the OpenTools API newsgroup. Please ask this question there. Multiple issues could be involved.

Matthew999

I want to create a form expert that inherits from an ancestor form. I am using createModuleEx to create the form. Is there a way to modify the resulting source code as well or do I need an editory interface to make any further modifications?

abauer

You can either provide the entire source (see the Creator interfaces), or you would need to get access to the editor and make the modifications.

Jay S

How much of the Ray Lischner Book on the OTA is still applicable to D5 and are there new things in D5 that wouldn't be addressed?

RobertKozak

Well, that is a good question. The old OpenTools API is deprecated and will not be carried forward. That said, Ray's book is the definative reference right now and a lot can be learned from it. With D5 you can still use the old style, but don't count on it for future releases.

bugger

Any intentions to allow users to replace whole subsystems in the IDE with custom-built "things", e.g. the dreaded project manager?

abauer

As the OTA evolves, this is definately in the realm of possiblity. No promises though. ;-)

bugger

Do you seriously consider to allow 3Ps to inject arbitrary data into the code gen and linker phases? That would be very nice.

jkaster

We've had requests like that in the past, and there's lots of nice things you could do with it, but we can't commit to anything yet.

Jeremiah

Please define interpreted scripting as it is used in question 44. Thanks.

jkaster

It's similar to what you might find in VB Script or VBA.

cerajim

Are there design guidelines or naming conventions that should be used for OTA addins?

abauer

I follow my own guidelines as best as I can. However, you are free to do what you want in your own code.

cellis

We will be excepting new questions for the next 12 minutes. Please make sure to get your questions in the queue using the /ask command.

rhaven

What about automation interfaces, both for the IDE (perhaps for training) and for distributed Delphi programs (for automated testing)?

abauer

Directly supported via the current OTA is beyond its scope. However, it is definately possible for a third party to add a layer that provides this functionality.

overcash

One place where C++ and OP differ is the use of header files in C++. Will this get addressed in the BCB OTA that will better differentiate header files from cpp files than it currently is?

jkaster

Some of those concerns will be addressed in a future release of C++Builder.

AWiggin

We would like to be able to add a tool bar to the IDE. Is this possible?

cellis

Those interested in scripting/automation of the OTA can try the third party Scripting Expert at http://www.run-time-systems.com.

RobertKozak

Yes, it is possible but the steps to do it are too much to get into in this forum. Post your question to the OpenTools Newsgroup and also check out the source to freeware and open source wizards like GExperts.

AWiggin

In regards to question #46, they use assembly to accomplish there docking technique. Clearly this seems to be very suseptible to breaking on subsequent releases of Delphi. Any comments?

abauer

Yes. You are correct. It is for that reason that the OTA is evolving to better support these type of enhancments.

rvanider

Are you considering implementing Microsoft's IDTExtensibility interfaces to allow wider 3P integration?

jkaster

A translation layer is definitely feasible, but that's not something we're working on. This would make movement into other platforms harder.

cellis

This auditorium is currently quiet. Chat has been disabled to keep the noise down. You will not be able to see other users also logged into this auditorium. To ask a question, use /ask and type in your question.

eberry

Has anyone considered the registration of custom exception handlers with the debugger interface? Then, when my application framework raised TMyException, I could inform the developer of the likely cause or diagnosis with some message or wizard in the IDE.

abauer

Interesting suggestion. I'll put it on the list.

cellis

This is the last call for new questions. Please use the /ask command to submit questions to the speakers.

whawke

I would like to "insert" an Addin window that creates a "chain" of active windows. For example, I'd like to hit the F12 key that cycles between the Editor, Form view, and an Addin view. Can this be done? If so, any hints?

RobertKozak

INTAServices has a few methods that can help with this including getting the Action List. If you change the action (you bacially intercept the F12 key) and display whatever you want. For more detailed instructions repost on the OpenTools Newsgroup.

Jeremiah

Does JBuilder have anything like OTA?

abauer

Yes. In fact, JBuilder Solaris was built around a very open architecture. JBuilder Windows also has a very robust OTA.

Jeremiah

How do you balance the work that is done via third parties with what you want to put in future versions of the product. For instance, if someone had come up with a breakpoints solution would it have been included in D5?

jkaster

We definitely like to support our third party developers and have even included offerings by them on our Delphi companion tools CD to help raise awareness for them and benefit all our customers. However, we have to balance our support of third parties with support for our entire development community. If something makes sense for a lot of our customers and we have time to implement it, we would implement it regardless of what third party solutions may be available. Speaking as a former third party developer myself, this pretty much describes what you do -- you fill a niche that is not in the product. Many of these niches are never filled. Some of them are. As for the breakpoint feature, it would depend on whether we thought it had broad enough appeal for all our customers.

cellis

We will no longer be accepting new questions for the speaker(s). We will continue to answer the questions that have already been accepted.

AWiggin

We have resized the component pallette within the main form so that it was taller, but the main form wouldn't grow correctly to match the new size. Any ideas on how we might solve this problem?

abauer

While I don't normally suggest "hacking" into the IDE, one suggestion is to access main form and adjust the constraints property. You might ask this question in the OpenTools API newsgroup.

Matthew999

Referring back to question #25. The only way I was able to get the inheritence to work properly was to add the cmNewForm Flag. According to the "Book", the CreateModuleEx will disregard the source and the form arguments. Is there another way of doing it?

abauer

That requires a little more research than the chat time will allow. You should follow-up in the OpenTools API newsgroup.

jkaster

Thanks everyone, this has been a great chat.

cellis

Thank you for joining us today!
The auditorium will be unhushed shortly so that you can resume general chat.
Please join us for future Delphi Team chats. The link to the transcript of today's chat and the schedule of upcoming Live Delphi Chats can be found at http://community.borland.com/article/1,1410,10208,00.html.
Hope to see you here again!

abauer

Thanks for attending. This has been really fun!

RobertKozak

Thanks everyone. Great chat!

Server Response from: SC3