DataSnap analysis based on Speed & Stability tests – Part 2

Many thanks to all those who participated in the discussion in the previous post. All comments, criticisms and compliments are welcome. This is what motivates me to keep writing this blog. The repercussion of the previous post was much bigger than I expected. The Embarcadero team corrected some of the DataSnap problems and therefore I […] … Read More

Read More

DataSnap analysis based on Speed & Stability tests – Part 2

Many thanks to all those who participated in the discussion in the previous post. All comments, criticisms and compliments are welcome. This is what motivates me to keep writing this blog. The repercussion of the previous post was much bigger than I expected. The Embarcadero team corrected some of the DataSnap problems and therefore I […] … Read More

Read More

Flotsam and Jetsam #72

  • Am I weird?  One of the first things I do when I install Delphi is to turn off Brace Matching and Line Highlighting.  I find both of these features incredibly distracting, particularly the Brace Highlighting, which makes it impossible to see where the caret is in the text. 
  • This article by Hal Berenson should make interesting reading for Delphi folks interested in the economics of development tool vending and the business models around them.  Delphi isn’t mentioned, but it does discuss the changing business model of Visual Studio from within Microsoft and how Adobe’s tool business put pressure on MS and actually changed how they did business.  MS’s  Interesting stuff.
  • I love Twitter and try to tweet pretty frequently (I’d be honored if you followed me).  One of the fun part of tweeting is seeing the creative and interesting use of hashtags.   One current hashtag that is going around and that is of interest to us Delphi developers is #code2012.  In it, folks are putting the names of the languages that they coded in during the past year.  Someone has a nice graphic that shows the relative popularity – and Delphi isn’t doing too badly.  I just tweeted to help make that Delphi circle just a little bigger. 
  • Holy cow, I feel like I did when Buffy ended – stunned and saddened.   Žarko Gajić is moving on from his position as the guide for About.Com Delphi.  Žarko has been doing that job for 15 years, and I’m willing to bet that his site is as common a search result as any in the community.  Well done, Žarko, and good luck in your future, Delphi-related endeavors.  And hey, the door is open – anyone willing to step into Žarko’s shoes?

Read More

Read More

Fixing FireMonkey: TMemo/TEdit – OnExit

Currently in the Delphi XE3 release there is a bug in the OnExit processing of TMemo and TEdit (possibly others) controls. Issue If you make a change in a TEdit or TMemo control and then exit the control, after the OnExit event is called, another OnChange event is called. This shouldn’t happen. This doesn’t occur in the VCL framework and shouldn’t happen in FireMonkey. Solution TEdit The fix for the TEdit cause is pretty simple. Since the FNeedChange field in TCustomEdit is protected we can use a class cracker to fix it. You could put the fix into either a new control or in either an OnExit or OnChange handler in your application. type TEditClass = class(TEdit); ... procedure Form1.OnExit(Sender: TObject); begin TEditClass(Edit1).FNeedChange := False; end; It’s interesting to note for TEdit, FNeedChange is protected. This is because in the TCustomEditBox descendant (used by TSpinBox and TNumberBox controls), the FNeedChange field is set to False after the overriden Change method is called. Perhaps this should have triggered the developer making that change, to actually fix the issue in the ancester class. TMemo The fix for TMemo is more interesting because unlike the TCustomEdit class, FNeedChange is private. Thankfully extended RTTI comes into play. I put this code where the memo content was saved to disk, you could put the code in the same spot in your applications (if applicable), or place it in either OnChange or OnExit events. var LCtx: TRTTIContext; LField: TRttiField; LInst: TRttiInstanceType; begin // save your memo contents LInst := LCtx.GetType(Memo1.ClassType).AsInstance; LField := LInst.GetField('FNeedChange'); if LField <> nil then LField.SetValue(Memo1, False); end; If your save is triggered by the user selecting a control that takes focus from the memo, the OnExit event will trigger before executing the fix above. Under these circumstances, moving the fix to the OnExit event of the memo is advised. Another TMemo Issue The OnChange event is only triggered after typing two characters in a TMemo, the first character typed into the memo doesn’t trigger the OnChange event.
Read More

Survey 2013 – Help to define the content for my blog in 2013

Dear blog readers, I prepared a short survey and I will appreciate if you can invest 5 minutes of your valuable time answering few questions. My goal with this survey is to learn more about your software development plans for 2013 and identify potential and useful topics to all of you. Also validate some content ideas I have for 2013. The survey is pretty straight forward, take less than 5 minutes and is very important to help to define the blog content for 2013. Thank you, Andreano Lanusse PS: You can also access the survey directly from this link http://bit.ly/peal2013en [googlemaps https://docs.google.com/spreadsheet/embeddedform?formkey=dEpLeC1jSHg3WElaMTY2YWY5MjlPNkE6MA&w=520&h=2525] Andreano Lanusse | Technology and Software Development Follow me on Twitter: @andreanolanusse Related posts: Delphi Developers’ plan for mobile, desktop and n-tier development Why I chose WordPress as Blog Tool Beginning my personal blog
Read More

Cross-platform development the FireMonkey way

Para leer este articulo en espanol haz click aqui. What is FireMonkey? FireMonkey is cross-platform Framework developed by Embarcadero. FireMonkey was originally designed by Eugene Kryukov in the company “KSDev” as VGScene. In 2011 Embarcadero acquired the rights to the software and renamed it to FireMonkey. FireMonkey is included, along with the traditional Visual Component […] … Read More

Read More

XE Plus Pack – Release 11

Release 11 of XE Plus Pack is now available for all supported IDE versions (Delphi XE, Delphi XE2, Delphi XE3). XE Plus Pack and XE2 Plus Pack now include all features available in XE3 Plus Pack. Release 11 features: Visual Forms can now support multiple projects in the same location. Note: Existing projects with Visual Forms active will need to be rescanned. Added new commands to the Project Managers’ File Actions menu item. Open With… Open with Notepad Improved Mouse Scrolling of the designer surface for VCL applications. Minor UI enhancements to dialogs within Visual Forms expert. Fix issue with the replace capture dialog not displaying the image to use. Add “Capture Form” command to a forms context menu so it is even easier to update a form within the Visual Forms view if automatic updating is not active. Support Resolution guidelines being displayed in the FireMonkey designer.
Read More

Are you eligible?

A couple of weeks ago, I implemented a new EDN feature which may have gone unnoticed by many of you. When you log into Member Services, you will now see a new ‘My eligible field tests’ option in the navigation bar to the left.
When you click on this, it will show you a list of […] … Read More

Read More

Flotsam and Jetsam #70

Looks like Bjarne Stroustrup himself will be part of the C++ portion of CodeRage7.  That's quite a coup. LeanTed now has its own URL:  http://www.leanted.com Anyone out there know about TSynEdit?  Which is the "one true version" that I should be using?  I'm using this one:  http://sourceforge.net/apps/mediawiki/synedit/index.php?title=SynEdit_Home_Page but it seems like there are/might be other better/different versions out there.  Anyone have any advice or thoughts on the matter? Also, anyone know about what encoding it uses?  Can I change/set it? I confess I can't seem to figure that out.... Delphi is really popular in Brazil, and Roberto Schneiders is a new blogger from that lovely country.  He's written his first post about DataSnap.  Nice. Cloud storage certainly is all the rage. As far as I can tell, I have storage in the following places: DropBox, BitCasa, Google Drive, SkyDrive, Asus Cloud Storage, and Amazon.  And probably some others I can't even remember.  Here's a business idea that I'm sure has already been done because I just thought of it:  Create an app that aggregates all those different chunks of space into a single drive.  That would be cool. Everyone seems worried about Best Buy -- apparently they are all doomed and everything in the face of Amazon -- but I can tell you they didn't look doomed last night at midnight.  I was awake and decided to attend their Black Friday event at my local store, which started at midnight. (I had not intention of, and did not, buy anything...) The place was an absolute mad-house.  There was a *huge* line to get in when I arrive right at 12:00a, and they had a large maze set up in the store to keep people moving in the same direction.  I didn't notice any outrageous deals, but I can tell you that a lot of merchandise was available and a lot of it went out the door.  Plus it was fun -- great people watching.
Read More

DataSnap analysis based on Speed & Stability tests

It’s not difficult to read and listen about the wonders of Embarcadero DataSnap technology around the world. I attended the Delphi Conference 2011 and 2012 in Sao Paulo, Brazil, after the release of versions of Delphi XE2 and XE3, and the words “performance” and “stability” are not spared when the subject is DataSnap. Apparently a […] … Read More

Read More

DataSnap analysis based on Speed & Stability tests

It’s not difficult to read and listen about the wonders of Embarcadero DataSnap technology around the world. I attended the Delphi Conference 2011 and 2012 in Sao Paulo, Brazil, after the release of versions of Delphi XE2 and XE3, and the words “performance” and “stability” are not spared when the subject is DataSnap. Apparently a […] … Read More

Read More

FireMonkey Style – TStyleTag (Part 2)

Part 1 – http://jed-software.com/blog/?p=699 Along with the missing registration of TStyleTag, the following components cannot be used in styles without hand editing FMX or Style files. TFontObject TBrushObject I’ve updated the package to now register these missing style components so you can use them in custom styles. Download Package The change is straight forward if you have already downloaded and installed the previous package. The register procedure should now look something like this: procedure Register; begin   RegisterComponents('Shapes', [TStyleTag, TFontObject, TBrushObject]); end; NOTE: You may want to register them to a different palette location.  
Read More