Frames Live Chat Transcript from Nov 4th, 1999

By: Christine Ellis

Abstract: Frames Live Chat Transcript from Nov 4th, 1999

Frames Live Chat on Thursday, November 04, 1999

Subject: Frames Live Chat

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 04, 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 Frames!
Your moderator for today's event is Charlie Calvert of Developer Relations.
The speaker(s) present at today's Delphi chat are:
Chuck Jazdzewski - Chief Architect
John Kaster - Developer Relation
Danny Thorpe - Senior Engineer
David Intersimone - VP of Dev. Relations

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 companys 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 companys 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.

mikepence

How do you lock the contents of a frame to make it easier to move it around in a container?

cjazdzewski

We don't support locking the contents of a frame in this version. We will consider it for a future release.

mikepence

Suggestion: How about an unmoderated chat with DavidI, Chuck Z, Charlie C, etc. sometime?

cellis

We have found that unmoderated chats don't work well. And that it becomes a free-for-all asking questions. Thanks for the suggestion though. We may try to schedule some to see how they work.

Jeremiah

is there a way to cause all user imputs into controls that are on a frame to be synched with all of the frames in an app?

cjazdzewski

I am not sure what you mean by this question. Could briefly describe what you are trying to accomplish?

mikepence

Will frames be supported in Kylix? ;-)

cjazdzewski

Yes.

RMilmine

If you define a property on a frame that is published, is there a way to make it show up in the object inspector?

cjazdzewski

Only if you register the frame as a component, but then it is no longer modifiable at design time.

cellis

Today's chat is on "Frames". We will not be answering questions on other product areas. Thank you.

overcash

When creating frames dynamically at runtime when can a component safely call GetParentForm and get the correct result (instead of nil) during its creation cycle? Most components do this in the Loaded method and it is not set yet there.

cjazdzewski

Calling GetParentForm will not return a form until the frame is hosted into a form. If you create it dynamically it will not be hosted into a form until the parent property is set. This differs from when you it is loaded inside a form.

kilterman

I have not looked at frames, could you explain what might be some uses for frames

cjazdzewski

Frames are useful to organize groups of controls that are used in multiple places in your application. If you used templates, most of the time, frames are a better approach. For example, if you have a bitmap that is used in multiple forms, you can put it in a frame and only one copy of that bitmap is included in the resources of your application. You could also describe a set of edit fields that are intended to edit a table with a frame and use that whenever you want to enter data into the table.

MiniMe

Is it possible to use Frames as components in packages? Right now, when I register a frame as a component, it works only, if I compile it without packages.

jkaster

Yes, you can definitely use frames in packages. It sounds like you might be missing something from the packages. You should drill down on this problem in the vcl.components.using newsgroup.

TDC

Given that frames do not enforce encapsulation at all or have a design-time interface, do you intend to provide another way to design compound components visually without sacraficing the principle of ENCAPSULATION?

cjazdzewski

We have not provided another way to visually design components but we will consider it for a future release.

MiniMe

How can I make Frame data-aware? I tried to do as with any other component, but I've got AV. Is it doable? If not, is there a work-around?

cjazdzewski

If you put a TDataSource component on the frame and connect the contained data aware component to it, when the data source is connected to the data set on the targe frame is set all the components connected to the data source will be connected to the table in the form.

overcash

Since there is no logical place for an OnCreate event, is there any thought or possiblity to giving an event that fires off once all the fixups are done, sort of an AfterCreate to allow for manual fixup?

cjazdzewski

There are no events that you can handle for this, but you can override the constructor in the frame or override the Loaded method. We will consider adding an event for this kind of code in the future.

TDC

How do you respond to the fact that a user of a frame can rewire the embedded controls beyond the initial intent of the frame author?

cjazdzewski

That is possible you are right. We will consider allowing some of the functionality of the frame to be locked in a future release.

dstock5

Can Frames be nested inside one-another?

cjazdzewski

Yes.

sysrpl

Have you seen Custom Containers from Sergey Orglik? Would it be possible to incorporate his idea of a container class "repository" into the your framework? Also, his custom containers allow NEW published information to show up in the object inspector ... a very nice feature.

cjazdzewski

I have not seen it. From your description it sounds interesting. Send me e-mail about where I can find it.

mikepence

When can we have a chat about Borland marketing?

jkaster

I will schedule it and update the Delphi Chat Schedule on the community web site.

TDC

This relates to frames in principle: Was it logically necessary to tie "published" to visibility? That is, Pulblished implies Public.

cjazdzewski

We feel that if you make something published, accessable at runtime, it needs to be clear that it is also public. If you place a private member in the runtime type information it means it is accessable in places where the language would indicate that it shouldn't be. That said, there are some appliations for such a beast, so we might consider allowing it in a future release.

whoopdeedoo

Is there a limit to the number of frames that you can use?

dthorpe

Nope. Well, available memory, disk space, etc...

MiniMe

What is the best way to have dynamic frames? Let's say, I have two different address frames, one with USA view, and one with European view, and would like to change them dynamically, based on the country field in the database, without losing the content of other TEdit fields on the main frame (the address frame is a part of a larger Person frame).

cjazdzewski

I am not sure this is the best way, but you could create the frame dynamically at runtime. You could also have the frames in a page control without the page tabs showing and flip the pages at runtime.

whoopdeedoo

Are there any components that you can't use on a frame?

dthorpe

Components that stream out custom properties are responsible for comparing the current value to the property value of the "ancestor". If a component doesn't do that, it isn't fully compatible with form inheritance or frames. This is only an issue for components that define custom property streaming via DefineProperties.

klipscomb

I don't have Delphi 5 yet (it's on order). Please explain what this "Frames" thing is about.

jkaster

This is very high-level, but frames allow you to visually create a component group, make default behavior for it, inherit from it, use it in multiple applications, share resources (like bitmaps) so only one copy of the bitmap is in the app, and so on.

randyyork

Why are there very few books on Delphi 5, there are tons on VB? Where is C Calverts D5 Unleashed?

ccalvert

There will be no D5 Unleashed, but Marco Cantu's book is out and I believe that Steve Teixeira and XMan's book is on the way.

ajmaske

Just curious, I can see the answer to the questions but not the questions. Is this how it is suppose appear?

cellis

It depends on the interface you use for ichat. The ichat plug-in works best and you shouldn't have that problem. We're seeing all of the questions and answers posted and our systems seem to be working okay today.
We'll be sure to post the transcript of today's chat on the community site, too. So, if you've missed anything today, you'll find everything there.

mikepence

Will the Solaris version of Delphi have frames?

cjazdzewski

Uh, well, if we create a Solaris version, it will support frames :-).

mrpcman

We were shown in DC by JK using frame as components, could you speak more on this topics? and possible releasing our own frame components!

jkaster

Not positive what you're asking, but Charlie and I both plan on doing articles on frames on the community site, and you should definitely check CodeCentral for examples. I'll bug people here to post some examples up there as well.

whoopdeedoo

What is the difference between using a frame and using form inheritance?

dthorpe

In a nutshell, frames are form inheritance without forms. Frames are nestable. At design time, you're manipulating multiple instances of frames on forms, whereas in form inheritance, you're manipulating class descendents of forms. Frames don't allow deletion or insertion of components, but form inheritance does. etc. etc. There's more info in the online help.

Jeremiah

To rephrase my question. Lets say I have a an option for my program that gives the end-user five choices and I use a frame with five radio buttons to depict those five choices. I then give them two different places to change the options. Is there any way to automatically have the users previous selections shown in both frames?

cjazdzewski

There is no built in, generic method to keep them in sync. If you use data aware controls connected to fields, the data is stored in the fields and all controls contected to them will be updated automatically.

calvinj

Is it possible to share Frames amoung a group of developers? If so, how?

cjazdzewski

Yes. They are just files and you can share them just like they where forms.

mikepence

How about a poll on the community site to help determine future chat subjects?

jkaster

We definitely want to do this. We'll implement it as soon as we can. We already have a backlog of applications to write. Should discuss this in the community newsgroup further. As soon as I have a spec, I'll post it somewhere for people to review. Working on specs for some of the other apps right now.

sysrpl

Where can I get a list of all of the Borland chat attendees mailing addresdes? ... What's Chuck's email? =)

ccalvert

Hey, what kind of question is that? But maybe if I type real fast, I can get them out before they can stop me:
cjaz@borland.com, davidi@inprise.com, jkaster@borland.com, ccalvert@borland.com, cellis@inprise.com, dthorpe@borland.com

mikepence

Could you list future chat times including EDT and other time zones? I can program like a Banshee..but I am time zone challenged.

cellis

The schedule of upcoming Live Delphi Chats can be found at https://community.borland.com/article/1,1410,10208,00.html. The next Delphi chat will be on ADOExpress next Thursday, Nov. 11th at 10:00am Pacific Time (1800 GMT).

jkaster

We'll also add a time zone conversion URL to the chat schedule. Just saw one yesterday that I should be able to find again.

sysrpl

Chuck, in your opinion, where does visual form inheritence now stand as frames seem like a very similar concept?

cjazdzewski

They are very similar. In fact, they user much of the same code in VCL and the IDE. Frames are different in that they allow you to imbed instead of inherit. Just like aggregation and inheritence, there is a lot of similarities but there are many things that are easier to accomplish with aggregation than inheritence as well as the other way around.

cellis

Today's chat is on Frames. Please use the /ask command to ask questions of the speakers.

Marklen

Can Frames be created on the fly in a procedure the way you can create say a button or a listbox?

jkaster

Yes, they can. There have been some messages about this in the Delphi newsgroups just in the last few days.

overcash

I've found dynamic creation fo Frames a power feature. Over the past couple of months I've come to the conclusion that interfaces and Frames are a very natural combo. Any thoughts in the future to add enhancements to Delphi to make the use of interfaces even easier? One idea of mine was to tight click in the Code Explorer and having an impliments option that would allow me to select what interfaces I want the class to impliment and what functions to go ahead and stub out.

cjazdzewski

Yes. We are looking at ways to make interfaces easier especially when connected to components.

TDC

Viewing the frame as a visual container, I have no contol over the properties and events that I expose or define? Will you remedy that in the future?

dthorpe

Just as with forms, you can delete the published field declarations in a frame class. This is one way to limit programmatic access to the elements of the frame. So, there are techniques to control exposure. We'll work on making them more obvious in the future, but you can do it now.

RMilmine

if the only way to see a frames published properties to to register it as a component is it possible that this could be in a future version?

cjazdzewski

Currently that is the case. We will look at ways to address this in the future.

TomH

There is time conversion at http://www.timeanddate.com/

Sergey

If I want to show a dialog that contains nothing but the components defined in a frame, do I have to drop the frame on an empty form first or it is ok to call the frame directly?

cjazdzewski

A frame must be hosted in a form, so yes you need to put into a form.

whoopdeedoo

Will using frames cut down on the memory and windows resources that my applications use?

dthorpe

Absolutely! Bitmaps and other reference-counted resources (strings) would be shared among all instances of the frame used in the application.

cellis

We're almost out of questions. Please make sure to get your new questions into the queue in the next 10 minutes.

sysrpl

What other cool things like Frames is the Delphi R&D department playing with?

dthorpe

Sure! We're working on ******, ******* *** *****, and might even attempt *********************.
:P

jkaster

chortles demonically.

dthorpe

snickers

mrpcman

Could you provide more info the use of frame as components, and the release (selling) of those components - as third-party tools?

jkaster

You can definitely make resellable frames, and we've heard from several people working on doing this. We're also working on additional examples for frames that will be published in CodeCentral or articles in the community site.

jkaster

scratches his head.

dthorpe

slaps jkaster with a trout

mrpcman

Is it safe to assume that delphi developers can now visually create components instead coding, coding, coding?

cjazdzewski

Yes, frames can be used to visually create components.

Sergey

What are the basic advantages of frames over Compound Components?

cjazdzewski

Frames are easier to create and can be customized at design.

azret

When is the chat about interfaces?

cellis

Great idea. We'll add it to the schedule of Delphi chats for the future.

Jay S

If I have multiple DLLs, all containing the same frame with a graphic image, is there still resource savings if these DLLs are loaded at the same time?

dthorpe

Well, it depends on what you mean by "DLLs". Putting a frame in multiple stand-alone (non-package) DLLs will produce multiple copies of the code and data, and runtime memory. Using multiple instances of a frame in multiple packages will share the code, data, and runtime base class instance data.

cellis

We just talked to the speaker (Danny) about doing an Interfaces chat. We've scheduled it for Dec. 9th at 10:00am Pacific Time (1800 GMT). How's that for a response to your request?! :-)

RMilmine

Is registering a frame as a component nothing more than calling registercomponent? Or, is there more to it?

cjazdzewski

Calling RegisterComponent and putting it into a design time package, are the only things that is required. You probably would want to come up with a custom icon as well.

sysrpl

How is Kylix coming along?

cjazdzewski

Its going great.

cellis

We will post the transcript for today's chat on the community site by the end of the day today or tomorrow at the latest.

jons_71

Can I create new component without putting it in a package?

cjazdzewski

Yes, but you cannot use it at design time unless it is regsitered in the IDE and that requires it appear in, at least, a design time package. It doesn't have to be in a runtime package.

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.

sandstorm

"To build Outlook style apps, should I use frames or stick to "embedded" forms (how can I merge menus if they are in a frame?)?

dthorpe

Hmm. Not sure about menu merging. You might need to manually merge them. As for building Outlook-style apps, you'll have to put in your own email corruptors and access violations. (sorry) ;P

corneliusd

I like the idea of using frames to visually create components. You'd have to write your own constructor/destructor. What other considerations over creating a component manually would I need to consider?

cjazdzewski

Once you make a frame a component, none of the components in the frame are available at design time. Any properties of sub-components that you would like the user to be able to change you need to add a published property on the frame that will then modify the corresponding property in the nested component.

Marklen

What is Kylix?

jkaster

Delphi and C++ Builder for Linux. See the press release at http://www.borland.com/about/press/1999/linuxdev.html

mikepence

Any Linux converts in the Delphi group after working on Kylix?

dthorpe

Linux has its advantages and its weaknesses, like any other software. It will be much easier to enjoy Linux once Kylix is available. :P

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 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!


Server Response from: ETNASC03