Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 4 of 4 total
Thread TKitComponent
Thu, Feb 9 2017 4:57 AMPermanent Link

Matthew Jones

It strikes me that it would be good to have a template for a component. A set of files that represent a basic component that stands alone, and not in a file with any others. Something like the TButton which has the various elements for layout, which can be expanded or removed or whatever. This set of files would then allow for an easy copy files, rename items, and modify to suit needs. WIthout the "I wonder if this is part of this component, or one of the others" that I fall over now.

Of course it also won't answer all needs - if I want to base it on something else more complicated, then that's still needed, but I could choose to copy code in, rather than delete code.

Anyway, would be interested to know what others think of this idea. How do you start a new component?

Matthew
Thu, Feb 9 2017 7:06 AMPermanent Link

Michael Dreher

"Matthew Jones" wrote:

  // Anyway, would be interested to know what others think of this idea.

The advantage of copying code is, it's not touched by changes from other projects. But then your maintenance effort rises.

 // How do you start a new component?

I walk through the inheritance tree of the library and see where it best fits in. The start of a TShape component for example: TComponent must be an ancestor but TShape should be visible in design/runtime and react to mouse/keyboard, so TComponent is not enough but TControl will do. Shapes should be a clilds container and provide an independet background color. An additional element in the control interface for the background? No, I'am lazy and let TBasicPanel do this. Should I expose alle properties vom TBasicPanel? The component controls the coners so better it's derived from TBasicPanelControl without publishing the Corners property.

Michael Dreher
Thu, Feb 9 2017 8:38 AMPermanent Link

Matthew Jones

Michael Dreher wrote:

> The advantage of copying code is, it's not touched by changes from other projects. But then your maintenance effort rises.
>
> ...
>
> I walk through the inheritance tree of the library and see where it best fits in.

Having just done the skeleton using the IDE, it is not a good experience. You get a unit, but no interface clause, no copy of the interface (which should be optional depending on what you are doing with it). I had to copy the TButton interface, then rename it in the editor (a scary thing!) and it just seems clunky. I had to add the GetInterfaceClassName function too. Oh the hardship I hear you say, but making things easy is what this suggestion is about. I want all the considerations sorted for me so I know I've got a winner. WebBuilder does so much good stuff, and I want to push into new components.
Thu, Mar 23 2017 11:06 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< Having just done the skeleton using the IDE, it is not a good experience. You get a unit, but no interface clause, no copy of the interface (which should be optional depending on what you are doing with it). I had to copy the TButton interface, then rename it in the editor (a scary thing!) and it just seems clunky. I had to add the GetInterfaceClassName function too. Oh the hardship I hear you say, but making things easy is what this suggestion is about. I want all the considerations sorted for me so I know I've got a winner. WebBuilder does so much good stuff, and I want to push into new components. >>

I missed this originally, but just to note: the option is New *Component*, not New *Control*.  That's why there isn't any interface additions.

What you want will be coming, but will take some time...

Tim Young
Elevate Software
www.elevatesoft.com
Image