"Live at the Borland Conference" Component Builders Chat Transcript from July 10, 2000

By: Christine Ellis

Abstract: Complete transcript from the live chat held July 10, 2000 at the Borland Conference with component builder experts: Ray Konopka, Ray Lischner, Kent Reisdorph, Danny Thorpe, and Allen Bauer.

"Live at the Borland Conference" Web Chat on Monday, July 10, 2000

Subject: Component Building Experts

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 Monday, July 10, 2000

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

Chat User

Message

cellis

Welcome to today's "Live at the Borland Conference" moderated chat with the Component Building Experts!
Today's speakers are:
Ray Konopka, Raize Software, Inc.
Ray Lischner, Tempest Software
Kent Reisdorph, TurboPower Software Co.
Danny Thorpe, Inprise/Borland
Allen Bauer, Inprise/Borland

cellis

Forward-looking statements in this chat, including but not limited to, those concerning Inprise's future financial performance, product availability dates, results of the Company's strategic review, and the potential features of or benefits to be derived from the Company's products, 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: possible disruptive effects of organizational or personnel changes by the Company, 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 and 10-Q.

cellis

This auditorium is currently quiet. General 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 the /ask command and type in your question.

aat

I checked for new Delphi books online and didn't see anything new. With the movement to CLX, are there plans by anyone to publish a component building book? Ray Konopka and Danny Thorpe had 2 great books, though it was for a few versions back.

rkonopka

I don't know about Danny, but I had planned on doing a new component book for D5, but with the announcement of Kylix, I have held off on producing a new version. I don't have formal plans right now, but a new version is something that I am trying to figure out how to fit into my schedule.

rif

How different is CLX to VCL? Can you give some examples?

rlischner

At 4:30 Pacific Time, you can ask the Delphi R&D team. I suggest you ask them directly.

ecardenas

What do you know about the efforts that 3rd parties like RXlib, Winshoes, and ICS are doing in order to have versions of their components ready for Kylix?

kreisdorph

I can't speak for other companies, but I can say that at TurboPower we are working hard to port some of our tools to Kylix.

marcelolr

So, what's the weather like in San Diego today?

cellis

Absolutely beautiful, of course!

weyert

Please discuss how to make use of AlphaBlend in Windoze2000?

rkonopka

There was an article about this is a recent issue of Delphi Magazine by Dave Jewell.

Spenny

Kent: Having moved from OWL to Delphi, what have you found as the biggest issues in the jump to Kylix? P.S. How's Jenny?

kreisdorph

Without question, one of the biggest changes will be converting code that makes heavy use of the Windows API. As for new development, its essentially a matter of learning a new API. Jennifer is fine, thanks. :-)

doichin

Will the transcript from this chat be on the Community site?

cellis

Yes. The transcipts for all of the chats held during the conference will made available on the community site after we get back to Scotts Valley.

Luminus

Thanks Ray L. for a very useful book, "Delphi in a Nutshell". Are there plans for a Kylix version?

rlischner

I am working on a book about Kylix, to be published by O'Reilly sometime in early 2001.

Martin_Mojzis

What about Direct3D or OpenGl support in the next Delphi versions?

dthorpe

Delphi currently ships with OpenGL header files. We're talking to Microsoft about the DirectX situation, but there is nothing to announce at this time. We have no plans to ship components for Direct3D or OpenGL in the Delphi box. There are already third party solutions for that.

Luminus

The URL for Transparency in Win2000 is http://www.undu.com/Articles/000629e.html.

BorlandForEver

What are the obstacles in building components in Linux that you want to share with us?

rlischner

I don't know if "obstacles" is the right word, but some of the key differences between VCL and CLX are: no message handlers, different event model, and owner-drawn components are replaced by styles. Instead of window handles, we have Qt object handles, so there's not as much of a difference as you might think.

kim_friis

Kent: Won't it be/isn't it difficult to convert your components to Kylix?

kreisdorph

Some of our products will be difficult to convert, others will be fairly easy. AsyncProfessional and InternetProfessional will have some challenges, of course, but they are largely non-visual libraries. The core "Library" aspects of products like SysTools will be fairly easy. The tricky stuff will be any of our libraries that contain a large number of visual components. Obviously, the messaging system is different. Further, we don't really know the full extent of the visual components that will be provided with Kylix. With some of our products its a "wait and see" thing for the near term.

DrDelphi

What are the plans for component building in Kylix vs. Delphi for Windows? Obviously, you don't have the same messaging system on which to build.

rlischner

In Kylix, the VCL is replaced by CLX, Component Library for Cross-platform. Using the standard VCL controls is pretty much the same in CLX as in VCL, but writing a component has some key differences. Instead of message handlers, Qt has its own event-handling mechanism. Every CLX component has an associated Qt object (roughly analogous to a window handle in the VCL). To handle messages, CLX creates a Qt hook object. The hook object feeds the events to the CLX object. Kylix will come with CLX components for all the standard controls, just like the VCL. If you want to create a new CLX control that wraps a Qt object, its pretty easy to create the handle and hook objects and hook them up to the CLX control. Note also that CLX is source-level portable between Linux and Windows, so we must be careful in our words. CLX will be in Kylix (Delphi for Linux) and Delphi 6 for Windows. VCL will be only in Delphi for Windows.

aat

What will be the future on Borland Database Engine on D6 and specifically development for the Linux distribution? I hear it will be replaced by InterBase.

dthorpe

We'll be making a lot of announcements here at BorCon this week about Linux developments - and quite a few live demonstrations of new technologies. We are developing a new, high-speed, thin data access layer to sit under the Delphi TDataset architecture on the Linux platform. This layer will also be available on Windows, for seamless cross platform portability. BDE will be maintained on the Windows platform, but will not be ported to Linux.

weyert

Are there things to keep in mind to make a VCL component compatible with C++Builder?

kreisdorph

For the most part, components written in Delphi work just fine in C++Builder. There are some "gotchas", but those are usually component-specific and have to be handled on a case-by-case basis (sorry, I can't be more specific than that). The most important thing to understand is that you must add {$ObjExportAll On} to your Pascal source. This allows the code to be placed in a C++Builder package.

rlove

The component development model has not change very much from version to version (a good thing). Ehat would each of you like to see added to the current model?

dthorpe

We are actively evolving the component model to provide greater support for interfaces. Interfaces provide a lot of wonderful abstraction and "future compatibility" opportunities that plain old class types can't do. Look for new interface stuff in D6 and Kylix components.

rif

To KReisdorph: When will you be able to release your tools? Date?

kreisdorph

Right now we are not announcing any release dates. This is obviously because we don't know when Kylix itself will be released.

aat

Is there the same GUID for interfaces in D6 (Linux version)? What if I don't define a GUID if I don't plan to distribute the component?

abauer

Depends on to which interfaces you are referring. In general, as long as the declaration has remained the same, there should be no reason to change the GUID. As for requiring GUIDs, the rules will remain the same for Delphi in both Windows and Linux.

doichin

Is it possible to get the list of forms in the current project and the components on them in design time?

rlischner

Yes. Use the OpenTools API to get a list of units and forms in a project. Open each form to get its form interface. Query the form interface to get all the components on the form. See SourceToolsapiToolsapi.pas for information on the necessary interfaces.

Luminus

Ray K.: I'm using your excellent Raize Components. Will they be available in Kylix?

rkonopka

First of all, thanks. As for whether they will be available on Kylix, we are working on bringing over as many components over to the CLX framework as possible. Some components in RC are Windows specific (ex., TRzSendMessage, which wraps MAPI) and so won't be moved over. However, other components do make sense to move over. Our direction right now is to create a new set of components based on CLX that will be very similar to what is in Raize Components now.

wind

How involved are you guys in the R&D for D6 and Kylix?

abauer

Well... I'm quite involved seeing as how I'm the IDE architect and manager of the IDE R&D team. Danny is also here and is involved heavily as well. ;-)...

weyert

Kent: First of all thanks of C++ books (got signed books from drBob). Do you think OnGuard would be available for Kylix?

kreisdorph

We aren't announcing anything specific about our Kylix products... only vague hints that we are working on it. ;-) Certainly, we will do our front-line products first. We will evaluate our other products after we release the first round of products for Kylix.

BorlandForEver

Ray, I'm surprised that O'Reilly published a Delphi book. Not that I have any complaint. But how did you manage to get them to publish? Not that you're not the best. But is it because O'Reilly thinks that there's a big market for Delphi?

rlischner

I had to convince Tim O'Reilly that Delphi is a viable book market. Apparently, I succeeded. O'Reilly has a strong presence in the Linux market, so publishing a Delphi for Linux book was an easy sell. I can't say whether they will publish additional Delphi books, but I'm hopeful that Kylix will renew interest in Delphi books.

DrDelphi

What are the major issues porting from Windows to an OS with a dissimlar messaging system?

dthorpe

This is a large topic, more than can be answered in a simple chat response. We have about 5 conference sessions here this week on this topic alone. The short answer is, if your application uses Win32 API calls, that code won't port to Linux. If your application uses PostMessage, there is currently no equivalent on the Linux platform. If your application works primarily with VCL components, properties, and methods of the VCL application architecture, our goal is to make porting that code fairly easy. Application writers don't generally operate at the OS messaging level; component writers do. Applications will be easier to port than components themselves.

weyert

Ray: On the Cttm in Holland you were talking about design and runtime packages. Could you give details?

rkonopka

There are other sources of information for this, but in short, when it comes to distributing components, I highly recommend that you place all your component code (without Register calls) into runtime packages. I also recommend creating a registration unit (a simple unit that contains a Register procedure). Inside the Register procedure (which must be spelled Register--with upper case "R"), you register your components and any design editors you have. The registration unit should then be placed into a Design-only package. The Design-only package then requires the runtime package.

aat

Delphi itself makes heavy use of COM, there's no such thing in Linux. How does that affect the port to D6, because CLX is cross platform.

abauer

Delphi, the IDE at least, makes very little use of COM. Certainly, there are portions of the IDE that talk to COM and there are components for that architecture. However, due to the component-based nature of the IDE design, it has been very easy to separate the platform dependencies. This morning at the Delphi Product Address, we demonstrated the Kylix IDE building CLX applications.

weyert

Kent: Could you be more specific about {$ObjExportall On}? Thanks, for the info. :))

kreisdorph

I can't really give you any more information. I can't tell you the technical details about what {$ObjExportAll On} does, only that it is required for C++Builder support. What we typically do is have one include file that all units in a particular library pull in. We do the {$ObjExportAll On} in that include file. There is a help topic in the D5 help file on this subject if you want to know more.

kim_friis

Is it possible to get some in-depth information on how difficult it will be to convert my own component to CLX?

dthorpe

Read Robert Kozak's article in this month's issue of Delphi Informant. Also look for more articles on the Borland Community web site in the coming weeks as the information presented here at the conference gets digested and recirculated by attendees.

rlove

What ways do each of you use to debug components that only misbehave at design time?

rkonopka

I'm not sure about the others here, but I use CodeSite, of course!

brirtch

When both Delphi for Windows and Kylix use the CLX, and an application or component is developed using only the CLX, will it be 100% portable code (e.g., File Save in Windows, File Open in Linux)?

rlischner

A project that uses CLX and does not use any OS-specific APIs, it will be 100% source-level portable between Linux and Windows. Many real projects will need to use some OS-specific code, so you can use conditional compilation directives. You can even use different forms in Linux and Windows. Even if you use VCL in Windows and CLX in Linux, maintaining source-level portability isn't too difficult. Most of the standard controls have the same name, so only the unit names are different. In other words, you can create a project on one platform, add a few lines of conditionally-compiled code, and have a project that is source-level portable to the other platform. Most applications won't be that simple, and will need some additional work. The biggest hitch is avoiding OS-specific API calls. Little things like MessageBeep (Windows) or crypt (Linux), might be part of your project without your realizing it until you try to port the project. Kylix and Delphi 6 will include a compiler feature that can warn you about some platform-specific code, to help point out potential trouble spots.

weyert

Bauer: If you are IDE specialist, any plans to release the code of your editor?

abauer

While not beyond the realm of possibility, we currently have no plans to release the source code. I do, however, plan to continue to enhance the OpenTools API and provide more hooks to control the Editor.

marcelolr

Are there any core changes in component building (more/less interface support, graphics support, window messaging, etc)?

rlischner

Earlier in the chat, I answered a similar question, describing the CLX event handling model. I have one thing to add, though. The TCanvas object will be mostly identical between CLX and VCL. Basic graphics, with pens and brushes, will work the same.

kim_friis

Any advise from you guru's on how a lonesome :-) component builder get's his/her components published by known companies?

kreisdorph

That's a good question. I know that we (TurboPower) rarely consider components written by people outside the company. This is simply because the quality of the components submitted by others can vary so widely. Ultimately, my advice would be to contact any of the commercial component vendors and pitch your component to them.

weyert

Ray: "There are other resources" could you send them to me (by mail for example: chat@weyert.com)?

rkonopka

There is an entire section in my book about this exact issue. Although the book is not in print anymore, a PDF edition of the book is available from Raize Software.

BorlandForEver

What's the reaction of the crowd to the Kylix demo?

cellis

This question would be better answered during the Kylix Team chat later today at 4:30pm Pacific time. Please join us then!

doichin

I'm writing a small component that shows one dialog box at the program startup. How do I make this transparently (no code in the project)?

rkonopka

Could you be a little more specific about what you are trying to accomplish? Are you trying to create a splash screen?

Rolf Frei

Is virtual byte offset locking supported in Linux?

abauer

If there is a callable API to do this, then yes. However, I'm not clear on the terminology.

kim_friis

Will there be components (third party?) in Kylix to support/access Star Office/WordPerfect, like the Office components in D5?

kreisdorph

Obviously MS Office uses COM automation to allow access to the innards of Word, Excel, etc. COM automation does not exist in Linux. There may be other ways of "automating" applications in Linux, but AFAIK there's no standard for what is known as automation in Windows.

weyert

Danny: Do you have any plans to make a public beta of Kylix, so that we "component builders" also can start making our Kylix/CLX components?

dthorpe

Product release schedules are not my personal decision. (Thanks for the vote, though) Your best option is to contact Borland Developer Relations and sign up for the component developer program.

wind

Will there be a java component interface?

rlischner

No. Maybe a third-party developer will write a Beans-to-Delphi bridge, although I don't know of anyone working on it.

weyert

Ray: Thanks. My father bought the CD on the Cttm. How is it going with CodeSite 2 Beta -- already found solutions to collect the info about system configs as I requested on the Technology Preview?

rkonopka

The information on package design is in Chapter 16. CodeSite 2 is going well.

brirtch

If Kylix is released before D6, won't developers experience major problems with portability. For example, if you write a component in D5 based on VCL components, porting it to Kylix will most likely be very difficult and vice versa. Shouldn't Kylix and D6 be released at the same time (or D6 first). I just seem to have the feeling that Kylix will be the next release.

dthorpe

The plan is to synchronize the compiler and RTL feature sets before either product group is released. I can't comment or speculate as to which will ship first or how close together.

brirtch

What types of components would you like to see included with D6? For example, would you like Borland to produce a file listbox of the quality of the one in the Raize List Pack?

kreisdorph

Right now Delphi comes with a rich set of components. Everyone has their own pet component that they'd like to see included with Delphi. Ray K. and I are in the third party component business so we obviously have a different perspective on this issue. ;-)

sysrpl

What components won't be making their way from the standard version of Delphi to Kylix? I am asking this because I'd like to get a headstart on creating Kylix component equivalents.

dthorpe

The components we won't be taking to Linux are the components that wrap Win95-isms that have no equivalent in Linux. If you want to tackle that, knock yourself out... ;>

weyert

I would like to make something TForm also, so that I have an easy way to make my own form style. I want to clone OS/2 Warp windows and BeOs style. Am I able to use TScrollingWinControl for this purpose?

rlischner

Yes, you can start with TScrollingWinControl. There are two issues here: design time and run time. You need to decide which events of TForm you want to emulate and write all the necessary code. At design time, you can take advantage of the form editor by creating a custom module. Your custom form will be drawn within an ordinary Delphi form, but the user can see exactly how your custom form will be drawn.

sysrpl

What new or exciting component technologies for Delphi have you guys been most impressed with in the past year?

rkonopka

Delphi 5 came out just about a year ago, so this could be interpreted as what new components technologies were introduced in D5. With this in mind, the underlying component technologies haven't changed much. However, to pick something, I'd put my vote in for the "implements" keyword.

doichin

Where I can find the source code for menu designer?

abauer

If you are referring to the IDE's Menu Designer, then it's not available as we don't publish that source. However, there are some interesting new features in Delphi 6 that may be close to what you are looking for ;-).. Sorry, I can't be more specific until later this afternoon.

Dossi

What about Delphi 6? Which new components will we find there?

rlischner

The biggest new area is CLX. That is, Delphi 6 will include the cross-platform components from Kylix, so you will have source-level compatibility between Linux and Windows.

weyert

Danny: I will do this -- what do we get then as component developer partner?

dthorpe

I'm not sure, actually. DevRel takes care of it. ;> Access and opportunity are the top items, IMO.

doichin

It is a Login component. You can use it for application level authorization. The main idea is to put this component on any form that is created at the program startup, and it captures the program stats automatically. It has to be shown at the program startup after all forms are initialized.

rkonopka

I would probably create a non-visual component and override the Loaded method. Inside this method, which will get fired when the form gets loaded, you can display your custom login dialog.

kreisdorph

Gotta run! Thanks all.

rkonopka

It's been fun. Later.

dthorpe

cya in 2 hours...

rlischner

Bye. Thanks for participating.

cellis

Thank you for joining us today!
Please come back this afternoon for the Kylix Team chat at 4:30-5:30pm Pacific (2330 GMT)


Server Response from: ETNASC03