[Lazarus] Multi-framework (Embarcadero/Lazarus) property editor for TCollection: best practices?
Gregory M. Turner
gmt at malth.us
Wed Oct 19 08:10:50 CEST 2011
Wow, is that what I really sound like? tl;dr,ldo
What I meant to say was:
"I am developing a Delphi+Lazarus TCollection descendant that needs a fancy designer window. What is the best approach to get one's Designer into both IDE's?
Thanks, and sorry for so many words.
-gmt
----- Original Message -----
> Hello Lazarusians. I'm working on a component with a relatively fat
> design-time footprint (that is, compared to it's run-time footprint
> -- it's a smallish sub-project but I expect ~75% of the code to be
> as design-time-only).
>
> My objective is simple, so I'd might as well just spell it out: I'm
> building a component to manage and encapsulate trivial configuration
> metadata at the module level in a platform-independent way. The
> basic approach I'm relying on right now is to give the user a
> TFrobCollection with various metadata-attributes, kind of like
> database columns. There will be some fairly straightforward
> slice-and-dice of the metadata, including aggregation across module
> boundaries.
>
> I want my code to be operational and maintainable in bleeding edge
> Delphi and Lazarus environments. I don't care too much about old
> versions. Being able to back-port to, say, D7, without horrible
> agonies, would be vaguely preferable, but it's far from a priority.
>
> I am pretty confident all of the run-time and business-logic aspects
> of this can be implemented without any need to step outside of the
> standard VCL/LCL mainstay design-patterns. The only thing that
> still has me still scratching my head is the design-time stuff.
>
> Specifically, I would ideally like to be able to code up my
> Collection property designer just once, and without utterly
> pathological usage of precompiler features. BTW even if it worked,
> I don't think I can just do form inheritance off TCollectionEditor
> or whatever it's called -- I'm looking to do something considerably
> more sophisticated than show a list and let the Object Inspector do
> all the real work -- probably showing the user a hierarchical
> representation even though the underlying data will be flat.
>
> What's troubling me is that Lazarus and Delphi seem to diverge more
> and more radically the deeper I push towards OTA territory.
> However, without some fairly elaborate designers I just can't see
> my component being both cross-platform and
> application-designer-friendly (I really hate when app. designers are
> forced to click back-and-forth bazillions of times, like monkeys, to
> accomplish semantically simple tasks, as too-often seems to be the
> case with Components supporting lots of TPersistents and
> Collections, but poor, buggy, or non-existent property designers...
> I won't name any names, but I'm sure many of you have been that
> monkey at some point or another (I know I have) and didn't like it
> :S
>
> Anyhow... can some of you with more experience with the LCL <-> ide
> state-of-the-art give me some advice on where is the right place to
> draw the line? i.e.: Should I just ignore all of the various
> Collection property editors and so forth and do something from
> scratch which absolutely minimizes OTA dependencies or will Lazarus
> be able to accommodate some more aggressive approach? Are there any
> particular OTA interoperation oases that work really well right now?
> Any hard-core face-slappers that I will need to fix upstream in
> Lazarus or the LCL before doing /anything/ meaningful along these
> lines?
>
> So far my TOwnedCollection skeleton works like a charm in both IDE's
> using the default designers, btw. I didn't have to use a single
> kludge. But my initial efforts at design-time stuff have ended up
> looking hopelessly pathological in one IDE or the other.
>
> Thanks for any help/advice you may have for me,
>
> --
>
> -gmt
-gmt
More information about the Lazarus
mailing list