DSharp Bindings vs LiveBindings

I think it's finally time to compare these two things and see which one may fit you better. This is my point of view that may not be completely objective.When I noticed that there was actually no language support for LiveBindings I was very disappointed. I think without language support you cannot create anything that works much different from how DSharp Bindings work. And actually LiveBindings don't. I could not just change the VCL source code so I had so come up with some "hack" (using the interceptor pattern by including the VCLControls unit that subclasses the supported VCL controls). Of course the guys at Embarcadero had the power to change the VCL classes and that is why they implemented the observer pattern into TComponent I guess. Did you notice that is not that easy to connect simple TObject descendants with LiveBindings? Another thing is that you cannot just connect your Edit to some other component, set up the binding and it works. You still have to write code into your OnChange event because the observer only is activated when you use TBindLink. And this will usually set your edit to read only unless the SourceComponent implements some specific interface. I am very sure the whole BindLink part of the LiveBindings was only for enabling data sensitive controls for FireMonkey (something I have not looked much at yet).In my opinion for simple bindings like displaying some address or customer Data the point goes to DSharp. It "just works" instead of having to write extra code which should not be required because that's the purpose of bindings.So what about more complex data like displaying a list of objects in a grid? DSharp does not support any grids yet but it got support for listview, treeview and the virtual treeview. Supporting the stringgrid is on the list and will definitely come. How does it work? Well you just connect your list to the view property of the supported control and you specify a data template that needs to be written in delphi. In fact it turns out to be a bit more complex sometimes. When using the virtual treeview and the treeview presenter you want to specify the columns and then you can bind these columns to the properties of your objects in the list. Have you tried yet to bind a list to some listview or stringgrid using LiveBindings? I have and I failed. To be honest I gave up very quick because this was just so cumbersome and required several string based expressions. Did I mention that the documentation on the new features in XE2 especially LiveBindings sucks? Well yeah my documentation does as well, but I don't have a documentation team working for me, right?Again DSharp Bindings are focused on doing simple things very easily without locking you out when you want to do more complex things. LiveBindings are very unintuitive to use. I think this point also goes to DSharp.What about connecting your dataset to some controls? This is something I haven't done since ages (except when working with a grid) but this is where LiveBindings got their power - as I said earlier I think their major task is doing exactly this. Unfortunately the designtime support for this is only enabled in FireMonkey but in VCL you have the DB controls anyway. DSharp just does not support this. I have thought about implementing it but I don't see the point. If you want to use datasets just use db controls which have been working for ages. In FireMonkey you just connect your edit to a field with a few clicks.Point for LiveBindings.As you may know there is some expression engine sitting below the LiveBindings that can do some nice things like calculating, concatenate strings and much more. There are built-in functions that can be used (like UpperCase, Round or FormatDateTime). I am happy to tell you that DSharp got an integration with DWS just yesterday. So you can basically use everything that DWS can do in your bindings. From making your text capital letters to doing complex calculations or even evaluating business rules if you like. Since DWS is a real scripting engine you have way more power than the LiveBindings expression engine..I am very sure with this latest addition this point goes to DSharp.If you don't trust open source because it may not be continued in the future or does not give you the feeling of safety you may use LiveBindings. Also LiveBindings are ahead regarding designtime support - even if it is kind of cumbersome setting them up sometimes.For being the "official solution" LiveBindings deserve this point.So the final score is 3 to 2 for DSharp in my opinion. Again I have not been digging through tons of samples and documentation and since Embarcadero always just shows tons of fancy stuff in FireMonkey, other platforms and so on the documentation on this feature is not very present. I like simple solutions to simple problems. I totally hate full blown over-engineered solutions that are a pain to use in your daily business. And I have the feeling LiveBindings are over-engineered and not well designed. Otherwise they would be easy to use like throwing an edit and a button and the form and make them work, right?If you like using data bindings in any Delphi 2010 or newer you should definitely take a look at DSharp. Also there is much more in it than just data bindings.
Read More

October 17-19, 2011 – 3 day Delphi XE2 Seminar in Oslo

In 4 weeks from now (Oct 17-19, 2011), I'll be doing an in-depth Delphi XE2 seminar in Lillestrøm (Oslo), Norway, covering new features like 64-bit Windows development, cross-platform development for Windows, Mac OS X and iOS using the new FireMonkey GUI framework and LiveBindings, enhancements in DataSnap, IntraWeb and much more. See http://www.alfasoft.se/delphikurs.html for more information or http://www.alfasoft.se/produkt/delphi/filer/essentials_with_bob.pdf for the overview of the topics I'll be covering in these three days.
Read More

RAD just keeps on growing!

Yes, this is my first blog posting since I joined Embarcadero in early 2009 (way too long!), and I’m thrilled to talk about our just launched RAD Studio XE2 release.  How this release happened and what the future holds is a very exciting story, let me tell you more.  The enthusiastic reception of Embarcadero Technologies’ RAD Studio XE2 makes it the fastest selling Delphi release in years. Its marketplace acceptance is due in large part to increased R&D investments that are generating both sales and market growth records. Embarcadero has increased R&D investment in Delphi/C++ every year since acquisition from Borland, and has been a key driver in our sales growth each year. XE2 was no exception, with the largest R&D investment increase to date, benefitting from double digit growth in R&D …  in people, technology, and team acquisitions. But we are not stopping here.  There are many new exciting things in our roadmap, so we are again increasing our investments in Delphi/C++ to support our current and future releases. Embarcadero is a global company, and over the next six months we are increasing our investment, this time adding to our 70 member Delphi/C++ R&D teams by 25% to support our current and future releases. To focus our resources appropriately and reorganize for high growth, much of these increases will be in our European development centers.  This means some positions will be transferred among our four development facilities.  In fact, we have tripled the size of our office space in Spain to accommodate this growth.  Our Spain center has more than a decade of IDE experience and innovation and will be supported by the US team.  In the US, we are funding new platform compiler/debugger initiatives, initially for iOS, Android, and other platforms, and are also expanding and accelerating our next-generation compiler initiatives for C++ and Delphi. We will continue investing in our development capabilities to deliver to our customers the best tools in the industry. Tony de la Lama Senior Vice President, R&D
Read More

Packed out in Paris!

The third RAD Studio XE2 launch for me this week.
Just flying out from Paris after a packed out launch event here today.
Thierry Labord of Arrow ECS, was the host for myself, Stephen Ball, Marco and Bruno Fierens to present today. Really exciting to be talking with so many French developers today.
Here are some shots from […] … Read More

Read More

Delphi / RAD Studio XE2 Unit Scope Helper

Delphi XE2 introduces unit scope names, which means that a unit name gets a prefix in the RTL, VCL and FMX libraries. Since it's not always immediately obvious which of the 31 Delphi XE2 unit scope names should be used to prefix a given unit, I've written a little web application that may help in turning an original unit name into a scoped unit name (like SysUtils turning into System.SysUtils).
Read More

Delphi XE2 – heating up the hype: playing the matchmaker for VCL and FMX

To be honest, FireMonkey did not interest me much because of the fact that it is not compatible with any VCL application - says the documentation - actually that's not the truth!To keep the long story short: You can have both in one! (Disclaimer: I did only a few tests and it worked all fine - actually I have no clue if somewhere it's incompatible but I leave that as an exercise to you).Just create a new FireMonkey form (2D or 3D, doesn't matter) save it and then add it to your VCL application (just accept the warning). You can create your FMX form instance somewhere and just show it - no problem. But what if you want to create some nice control with animations or something and embed it into your existing VCL form? Well, put a TPanel on your VCL form and include the brandnew unit DSharp.Windows.FMXAdapter.pas after the Vcl.ExtCtrls. Then just create your FMX form somewhere and assign it to the new Form property of your Panel - and boom, there you go.As I said, I just came up with this and it's mostly untested - but that's the case for FireMonkey anyway, isn't it? So I thought this may be very interesting for a few people - especially those that used VGScene before. So have fun creating your shiny and new FMX forms and use them in your existing VCL apps. ;)
Read More