Sunday, April 24, 2016

A Better Way to Present and Organize Error Messages in Your Delphi Applications

I'm in the process of totally redesigning an application I wrote 25 years ago. Today, I decided to look for a better way to present error messages to my customers. In the past I simply littered my code with bunch of technical speak ShowMessage('bla bla bla technical speak bla bla bla'); code fragments.

With the help of Google, it didn't take long to find out that the best approach is to use "Apologetic" language in error messages. This has a positive effect on your customers.

http://ux.stackexchange.com/questions/31359/should-error-messages-apologize
http://www.faqoverflow.com/ux/31359.html
http://freshsparks.com/user-experience-tips-best-error-messages/

I've never liked the idea that the standard ShowMessage gets positioned centered on the screen. I'd rather have a messaged display centered on the window where the error occurs. I also don't want my error messages scattered all over the place. So, I set out to do two things;
  1. Display error messages that are centered on the form where the error occurs
  2. Centralize all the error messages in one place
I created a separate unit for the express purpose of managing and displaying error messages:



This makes it very easy to keep track of all the error messages. It also lets me easily create similar but slightly different error messages for any given situation. I can also group related error messages by using a simple number scheme.

I'm a big fan of code completion Ctrl+Space. When I need to include an error message I simply type zmsg Ctrl+Space and up pops the code completion window with all the available error messages that I can choose from.

zmsg Code Completion

Enjoy,
Semper Fi
Gunny Mike

P.S. As far as using "we" inside the error messages. I asked my wife if she was okay with an application giving this type of feedback and she said it was fine with her.

Sunday, February 21, 2016

Real World Justification for Purchasing Component Source Code

I'm working on a database project using Delphi 10S Update 1. The database I'm using is ElevateDB, which is written with Delphi. I licensed the ElevateDB VCL Standard version without source code back in 2011 and maintain my annual subscription. I'm very happy with this product.

I ran into an issue where inside the IDE both the 32-bit and 64-bit platforms display data in a grid when all the components are connected and active. However, when I run the application the 32-bit version works great but the 64-bit version gives me an Access Violation.

I read that the initial Delphi 10S had a problem with the 64-bit compiler. I figured that since I upgraded to Delphi 10S Update 1, I didn't have an issue with the 64-bit version of the compiler.

What I failed to realize and only realized after three or four days of frantic postings on the ElevateDB support form, was I was using compiled DCU's. These DCU's, both 32-bit and 64-bit versions, were compiled using the initial Delphi 10S release. Therefore, the 64-bit DCU's were built with the initial flawed Delphi 10S 64-bit compiler.

Shame on me for not understanding and realizing this in the first place. If I had, I would not have acted the way I did.

This brings me to the topic of this blog post. If I had purchased the source code version of these components I could have simply done a build all and the problem would have been solved. I don't remember my reason for not purchasing the source code version. Perhaps it was the added expense. Perhaps it was my thinking "I'm never going to monkey with the code and didn't need it".

The thought never entered my mind that I could wind up with flawed DCU's because they were built with a flawed Delphi compiler.

Lesson Learned!

Semper Fi,

Gunny Mike

Wednesday, February 3, 2016

Poll: What type of Delphi shop are you?

Back in November I conducted a poll to find out what kind of Delphi shop people belonged to. From these results 70% of the Delphi shops have 5 or less employees.

Here are the results:

Poll Results

Here is the link if you'd like to cast your vote.

Enjoy - Semper Fi
Gunny Mike

Saturday, January 30, 2016

A few minor "out of the box" tweaks for Delphi 10 Seattle

I recently upgraded to Delphi 10 Seattle Update 1. The first thing I noticed when I fired up the IDE was the font size of the Object Inspector and Tool Palette looked oddly larger. Then I remembered I had tweaked these settings a while ago when I first installed Delphi 10 Seattle. Of course I couldn't remember how I did this but I did remember there was a discussion about it somewhere.

The "out of the box" font setting for Delphi 10 Seattle is Segoe UI with a font size of 10. I prefer a font size of 9. Embarcadero has a nice wiki on how to change the initial settings.

http://docwiki.embarcadero.com/RADStudio/Seattle/en/System_Registry_Keys_for_IDE_Visual_Settings

I made one minor adjustment to EMBT's recommended settings:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\17.0\ModernTheme]
"FontName"="Segoe UI"
"FontSize"=dword:00000009
"MainToolBarColor"="clGradientActiveCaption"
The only other tweak I made was to the editor font. I prefer "Consolas" mainly because it formats zeros with a slash which makes them stand out from the letter "O". The editor font is located here:

Tools > Options > Editor Options > Display

Share your "out of the box" tweaks for Delphi 10 Seattle in the comments.

Enjoy - Semper Fi
Gunny Mike

Wednesday, October 14, 2015

Create Professional Installs for Mac OS X

I'm just getting started with learning cross-application development. One of the many issues that's crossed my mind has been how do I get the Mac OS X version of my software installed on a customers machine.

Well that question was answered yesterday during the "Prototyping an Object Pascal Code Editor with FireMonkey in Delphi for Windows and OSX" object pascal CodeRageX session.

Eli M. from Peacekeeper Enterprises, LLC presented a slide for a product that lets you create installs for Mac OS X. The product is called Packages and can be found at the below url:
http://s.sudre.free.fr/Software/Packages/about.html

I have not tried Packages yet. However, it appears similar to the Inno Setup tool for Windows.
http://www.jrsoftware.org/isinfo.php

Enjoy - Semper Fi,
Gunny Mike

Monday, September 28, 2015

FireMonkey Under the Hood: How FireMonkey Does What It Does

Here are two great videos from ITDevCon 2012 by Ray Konopka that talk about how FireMonkey does what it does. Ray gives an overview of the high-level differences between VCL and FMX. In part 2 he shows how to create custom FMX controls.

I love the way Ray gets frustrated. He's just like us.

Creating Custom FireMonkey Controls Part 1
https://www.youtube.com/watch?v=m0NeWCmKAnU

Creating Custom FireMonkey Controls Part 2
https://www.youtube.com/watch?v=ufCKmYAxyCA 

Update: 10/03/2015
I spoke with Ray and he gave me the link so we can download the source code he used in the demo. Thanks Ray!
http://www.raize.com/Sessions/CustomFMXControls.zip

Enjoy - Semper Fi
Gunny Mike

Sunday, September 27, 2015

Blaise Pascal Magazine: Complete Article Index

I subscribed to Blaise Pascal Magazine last year. I also purchased the complete back issue library which contains all previous issues of the magazine. Unfortunately the index that came with the Lib Stick didn't work. So I made my own index as a quick reference to help me find the articles I'm interested in.

Download Excel File

ArticleAuthorIssuePageTypeYear
Delphi 2007 HandbookFrans Doove14Book Review2008
Delphi Win 32 / .NET Component DevelopmentFrans Doove14Book Review2008
Representing graphics for math functionsPeter Bijlsma16Article2008
Client Dataset ToolkitDetlef Overbeek18Article2008
Website name checkingHenk Schreij19Article2008
Database normalisationHerman Peeren111Article2008
Delphi 2007 and VCL Component BuildingBob Swart113Article2008
WallpaperDetlef Overbeek116Article2008
Coding for two or more typesHenk Schreij117Article2008
Recipe for creating a cookbookTim Opsteeg121Article2008
Exploring Rave ReportsRik Smit125Article2008
Drawing on a changing backgroundDavid Dirkse133Article2008
Mini application: Opening filesDetlef Overbeek135Article2008
Rotating imagesDetlef Overbeek136Article2008
Delphi for PHP .2 new versionHerman Peeren23Article2008
Delphi 7 for Win 32 Development EssentialsFrans Doove26Book Review2008
Essential PascalFrans Doove26Book Review2008
Applied Mathematics for Database ProfessionalsFrans Doove27Book Review2008
Illustrated C# 2008Frans Doove27Book Review2008
Efficient Pascal – For-loopsHallvard Vassbotn29Article2008
Hack #1: Write access to a read-only propertyHallvard Vassbotn211Article2008
Resizing BitmapsDavid Dirkse212Article2008
Making right-justified EditsHenk Schreij214Article2008
Delphi 2007 VCL Component Building - IIBob Swart216Article2008
ClientDataset filteringMartin De Bont220Article2008
Binary HeapJulian Bucknall221Article2008
Intraweb and AJAXBob Swart225Article2008
Solving unknown variablesPeter Bijlsma228Article2008
Obfuscator?Rob van den Bogert230Article2008
Restricting Edits to numbersHenk Schreij232Article2008
Monitor aspectsJeremy North233Article2008
Euro symbol generation with the Alt keyHenk Schreij238Article2008
VCL Ribbon controlsJeremy North33Article2008
The Tomes of Delphi: Algorithms and Data StructuresFrans Doove35Book Review2008
Advantage Database Server, A Developer's GuideFrans Doove35Book Review2008
Combining visual components in an objectWim Zandt36Article2008
A simple component for color selectionDavid Dirkse39Article2008
Introduction to EnumeratorsPrimož Gabrijelcic310Article2008
Images in a DbGridHenk Schreij312Article2008
Change indication in a multiuser systemHenk Schreij315Article2008
Curve Fitting made easyPeter Bijlsma316Article2008
Advantage Database Server 9Rob van den Bogert319Article2008
VCL Property EditorsBob Swart321Article2008
Hack#2: Access to protected methodsHallvard Vassbotn326Article2008
Hack#1 updateHallvard Vassbotn327Article2008
Delphi Stream ClassesMarco Cantù328Article2008
TExpandButtonJeremy North330Article2008
Extending streamsJulian Bucknall332Article2008
Service Oriented ArchitectureFikret Hasovic336Article2008
Advanced EnumeratorsPrimož Gabrijelcic44Article2008
Text encryptionDavid Dirkse47Article2008
First In First OutFrank Dubbeld48Article2008
Delphi and the KeyboardDavid Dirkse49Article2008
RichEdit reportsHenk Schreij411Article2008
BookmarkStrHenk Schreij415Article2008
Continuation Curve Fitting made easyPeter Bijlsma417Article2008
Delphi 2009, Development EssentialsFrans Doove420Book Review2008
Delphi 2009 Language EnhancementsBob Swart421Article2008
Hacks3-Access to private fieldsHallvard Vassbotn426Article2008
Creating TView objectJeremy North427Article2008
Delphi Memory StreamsMarco Cantù430Article2008
SOA part twoFikret Hasovic433Article2008
Delphi 2009 HandbookFrans Doove54Book Review2009
Delphi 2009 Development EssentialsFrans Doove54Book Review2009
Specifying more than one shortcut keyHenk Schreij56Article2009
Solution for slow scrolling in DbGridsHenk Schreij57Article2009
The Xbitmap componentDavid Dirkse59Article2009
Painting framesDavid Dirkse512Article2009
Creating Stereographic ImagesPeter Bijlsma513Article2009
Dialogue boxesAdrian Kummerlaender515Article2009
The “Oracle” of DelphiThomas Pfister516Article2009
Advanced EnumeratorsPrimož Gabrijelcic519Article2009
Using TReader en TWriterMarco Cantù522Article2009
ASP.NET Web Services with Delphi Prism 2009Bob Swart524Article2009
Ceating a progress barJeremy North530Article2009
SOA part threeFikret Hasovic533Article2009
An Advantage for Delphi DevelopersCary Jensen65Article2009
Delphi RoadmapMarco Cantù68Article2009
A Twitter REST Client in DelphiMarco Cantù611Article2009
Resolving in “kbmMW”Fikret Hasovic622Article2009
JSDialog PackJeremy North631Article2009
Visual FormsJeremy North633Article2009
RemObjects Hydra: Win32 and .NET PluginsBob Swart636Article2009
Controlling the parallel portThiago Batista Limeira651Article2009
The Xbitmap class (part 2) Lines and EllipsesDavid Dirkse696Article2009
The Xbitmap class (part 3) PolygonsDavid Dirkse713Article2009
FastReport, A report generator for Delphi and .NETMarco Roessen718Article2009
When as var, const, out: or not to declareHenk Schreij724Article2009
Using Colours in DBGridHenk Schreij725Article2009
Writing Delphi Components: an IntroductionMarco Cantù727Article2009
Windows Communication Foundation with Delphi PrismBob Swart730Article2009
Datastore metadataFikret Hasovic734Article2009
using the Alt KeyFrans Dubbeid738Article2009
Delphi 2010 – what a feeling! GesturesBob Swart87Article2009
CountersDavid Dirkse811Article2009
Virus in Delphi?Nick Hodges814Article2009
Dezign for databasesMarco Roessen816Article2009
Customizing the T-Field data displayHenk Schreij818Article2009
Using Free Pascal and Lazarus to create applications for OSXJeremy North820Article2009
Writing Delphi Components IIMarco Cantù822Article2009
My Top Five Delphi 2010 New FeaturesPawel Glowacki824Article2009
Fast Graphic deformation by using ScanlinesPeter Bijlsma828Article2009
Wide Information Bus (Introduction)Fikret Hasovic833Article2009
Freehand Drawing (Introduction)David Dirkse836Article2009
The 3D spheres generatorDavid Dirkse95Article2009
What is kbmMW?Benno Evers97Article2009
Delphi 2010 Feature Highlight - Debugger VisualizersJeremy North912Article2009
Introduction to multithreadingPrimož Gabrijelcic918Article2009
Writing Delphi Components IIIMarco Cantù921Article2009
Talking DelphiHenk Schreij925Article2009
LCD Interfacing: Driving a HD44780 LCD in DelphiThiago Batista Limeira928Article2009
Exploring the inplace editing capabilities of TAdvStringGridBruno Fierens934Article2009
Remembering inputHenk Schreij106Article2010
Rotating photo cubePeter Bijlsma107Article2010
Non overlapping rectanglesDavid Dirkse1011Article2010
The Wide Information Bus part 2Fikret Hasovic1012Article2010
Library UnitHenk Schreij1016Article2010
Delphi Component writing part 4Marco Cantù1020Article2010
Delphi 2010 Delayed Dynamic Link LibrariesBob Swart1023Article2010
Four Ways to Create a ThreadPrimož Gabrijelcic1025Article2010
Delphi Advanced Tools:Michael Rozlog1030Article2010
DelphiControllerAnton Vogelaar1033Article2010
TWebUpdate & UpdateBuilderBruno Fierens1034Article2010
Debugger Visualizers Part 2Jeremy North1036Article2010
Synchronisation in a multithreaded environmentPrimož Gabrijelcic115Article2010
PacMan in Delphi/Lazarus Algorithm jungle - or how to get caughtJean Pierre Hoefnagel118Article2010
Moving from the BDE to ADS he End of the BDE?Bob Swart1111Article2010
Putting photographs on the internet A program using Indy FtpHenk Schreij1116Article2010
Shrinking of JPEGs Not small enough?Henk Schreij1120Article2010
An Introduction to theGoogle Docs API with Delphi Googling magic...Marco Cantù1122Article2010
Using TMS Poly List ControlsBruno Fierens1124Article2010
CodeHealer 2.6: fantastic toolkit or healer?Rik Smit1128Article2010
Drawing regular Polygons Make it look like a starDavid Dirkse1131Article2010
Database Workbench, productivity tool A fantastic ToolMiguel van de Laar1134Article2010
Programming FrogsDavid Dirkse1135Article2010
Introducing the Open Tools APIJeremy North1137Article2010
Design patterns Starting a web series of basic patternsHerman Peeren1139Article2010
Electronics Delphi Controller and Delphi Developer boardAnton Vogelaar125Article2010
RAD Studio XE PreviewDetlef Overbeek127Article2010
SQL produced by the ClientDataSetHenk Schreij1212Article2010
Introducing GoogleDocsApi_SecondPartMarco Cantù1216Article2010
The use of kbmMW components in a server applicationBenno Evers1218Article2010
Inter Process CommunicationPrimož Gabrijelcic1224Article2010
Peg Solitaire - a single player puzzleDavid Dirkse1227Article2010
Trans-continental travel using the great circlePeter Bijlsma1231Article2010
Creating gateways and other advanced topicsFikret Hasovic1234Article2010
Creating Office 2010 style VCL applications with TMS componentsBruno Fierens1237Article2010
Mini Course SQLMiguel van de Laar1310Article2010
Delphi JSON ViewerPawel Glowacki1313Article2010
Is Lazarus ready for writing commercial applications ?Zeljan1316Article2010
NexusDB exceptionaly good, a real surprise...Erwin Mouthaan1322Article2010
The TMS DataModelerBruno Fierens1327Article2010
Introduction to Databases Part 1Cary Jensen1331Article2010
First Look at Advantage Database Server® 10Cary Jensen1335Article2010
Real-time data collectionAnton Vogelaar1339Article2010
About Object oriented databasesDetlef Overbeek1345Article2010
Fastreport, whats up?Detlef Overbeek1352Article2010
Using ADS with Delphi Prism and ASP.NETBob Swart1359Article2010
A datawarehouse example using kbmMWKim Madsen1366Article2010
Multiplatform Windows CEJoost van der Sluis1373Article2010
Five Considerations for Choosing an Effective SQL Development ToolScott Walz1381Article2010
Pascal’s triangle byDetlef Overbeek148Article2010
Create an Index of your (backup) CD's/DVD's byPeter Bijlsma1410Article2010
Debugging multithreaded applications byPrimož Gabrijelcic1415Article2010
Using Amazon Simple Storage Service (Amazon S3) from DelphiMarco Cantù1419Article2010
A small spamming machine byDetlef Overbeek1422Article2010
Creating a Webserver in 5 minutes using kbmMW! byKim Madsen1424Article2010
Gadgets in your Delphi Windows application byHenk Schreij1428Article2010
Open Tools API (OTA) byJeremy North1430Article2010
Exploring the Async capabilities of TMS IntraWeb gridsBruno Fierens1437Article2010
Delphi XE Starter edition reviewedHoward Page-Clark157Article2011
Delphi XE Starter try: a littel MailserverJim Duff1513Article2011
ClientDataset: what to do if you dont have it?Detlef Overbeek1521Article2011
Introduction to Databases Part 2: Common Database ObjectsCary Jensen1528Article2011
Advantage Database Server and Delphi XE Starter EditionHoward Page-Clark1531Article2011
Moving /adding your components into the Delphi Starter EditionRik Smit1535Article2011
Delphi and UnicodePeter Prisman168Article2011
Anything to celebrate?Peter Bijlsma1610Article2011
The Xfont projectDavid Dirkse1612Article2011
Learning to use FastReport 4 for VCL, Part 1Sergey Lyubeznyy1619Article2011
Introduction to 64 bits on WindowsAlexander Alexeev1628Article2011
Creating iPhone/iPod/iPad web applications with Delphi & TMS controlsBruno Fierens1633Article2011
Introduction to Databases Part 3: TDataSetCary Jensen1639Article2011
64-bit Delphi programs are on the wayPrimož Gabrijelcic1643Article2011
Pascal Programing in the Android OSFelipe Monteiro de Cavalho1646Article2011
FieldByName alternativesHenk Schreij1654Article2011
The FlexCel components in actionSiegfried Zuhr1657Article2011
Writing new components in LazarusHoward Page-Clark174Article2011
Theme: Using Amazon S3 from Delphi (Part II)Marco Cantù1712Article2011
The calculation of expressions with complex numbers and/or three-dimensional vectorsAnne Meijer1717Article2011
Waiting for x64: WOW64Alexander Alexeev1721Article2011
Learning to use FastReport 4 for VCL, Part 2Sergey Lyubeznyy1724Article2011
Pascal's Triangle revisitedPaul Gellings1729Article2011
Introduction to Test-Driven-Development (TDD) in DelphiAlexander Alexeev1731Article2011
Theme: DataSnap and Android (Part I)Daniele Teti1738Article2011
Financial functions in DelphiPeter Bijlsma1743Article2011
Magic-Button Anti-PatternAlexander Alexeev1745Article2011
Tiles everywhere: introduction to TAdvSmoothTileListBruno Fierens1748Article2011
Introduction to Databases part 4: TDataSetCary Jensen1753Article2011
Writing New Components in Lazarus, Part 2Howard Page-Clark186Article2011
Delphi XE2 is the future - theme XE2Fikret Hasovic1813Article2011
Cylindrical anamorphosisPeter Bijlsma1817Article2011
Web Service Toolkit as a rich type framework for Plug-in developmentInoussa Ouedraogo1821Article2011
Polygon colouring and area calculationDavid Dirkse1824Article2011
Creating a Database program from scratch - 1Detlef Overbeek1829Article2011
An Android client for a DataSnap Server – Part 2Daniele Teti1834Article2011
Anti-freeze for the VCLAlexander Alexeev1839Article2011
Delphi XE2 New Features - theme XE2Bob Swart1846Article2011
Learning to use FastReport 4 for VCL - Part 3Sergey Lyubeznyy1853Article2011
Creating 64-bit applications with Delphi XE2 - theme XE2Jeremy North1864Article2011
kbmSQL – Structured Query Language for your memory tableKim Madsen1872Article2011
High Level MultithreadingPrimož Gabrijelcic1876Article2011
TMS Scripter Studio ProBruno Fierens1881Article2011
FreePascal vectorialFelipe Monteiro de Cavalho1890Article2011
The tale of the NigthtingaleDetlef Overbeek1896Article2011
Using the Advantage Database Client EngineMichael Van Canneyt18101Article2011
Introduction to Databases part 5: Configuring OLE DB Providers and ODBC DriversCary Jensen18107Article2011
Delphi XE2 LiveBinding - theme XE2Bob Swart18113Article2011
DataSnap connectivity for iOS using Delphi XE2 and FireMonkeyAnders Ohlsson196Article2011
Creating a simple webserver in LazarusMichael Van Canneyt1916Article2011
Using Amazon S3 in Delphi XE2Marco Cantù1921Article2011
Creating a Database program from scratch - 2Detlef Overbeek1929Article2011
Writing New Components in Lazarus, Part 4Howard Page-Clark1937Article2011
TMS MultiTouch SDKBruno Fierens1946Article2011
FireMonkey Containers and FramesBob Swart1953Article2011
Introduction to Databases Part 6: TClientDataSetCary Jensen1956Article2011
The new Lazarus for AndroidFelipe Monteiro de Carvalho204Article2011
Q&A Special Hint CueBannerHenk Schreij2014Article2011
The XFont ClassDavid Dirkse2015Article2011
3D geometry developmentBJ Rao2020Article2011
Q&A Determine the latitude and longitude of an addressHenk Schreij2023Article2011
Writing New Components in Lazarus, Part 4Howard Page-Clark2024Article2011
Creating a Database program from scratch - 3Detlef Overbeek2029Article2011
Introduction to Databases Part 7: dbExpressCary Jensen2039Article2011
Porting my Amazon S3 client to FireMonkeyMarco Cantù2045Article2011
Writing a component for iOS using Delphi XE2 & FireMonkeyAnders Ohlsson2049Article2011
TMS Instrumentation Workshop for FireMonkeyBruno Fierens2051Article2011
kbmMW Remote DesktopKim Madsen2055Article2011
Telnet in PascalFelipe Monteiro de Carvalho215Article2012
How to show formatted HTML text? And how to print?Henk Schreij2112Article2012
Developing an Outlook Social ProviderAndrey Terekhov2113Article2012
How to use the Format function?Henk Schreij2118Article2012
Creating a Delphi database application for Mac OS XTim Opsteeg2119Article2012
Working natively with ZIP archives in Windows using zipfldr.dllViacheslav Ryabinin2123Article2012
Using AnyDac in DelphiMichael Van Canneyt2132Article2012
VCL Custom Styles – Part 1Jeremy North2137Article2012
Introduction to Databases Part 8: dbExpress (continued)Cary Jensen2143Article2012
Introduction to DebuggingPrimož Gabrijelcic2150Article2012
Kinect or Xtion? GeNui !Simon Stuart2156Article2012
DLL Hell, part 1: DLL redirectionAlexander Alexeev226Article2012
Pump some Oxygene into your Android device with Oxygene for JavaBrian Long228Article2012
AnyDAC macros and scriptingMichael Van Canneyt2219Article2012
VCL Custom Styles – Part 2Jeremy North2224Article2012
Creating a Database program from scratch - 4Detlef Overbeek2230Article2012
One of the hotest topics: XML and lately JSON...Fikret Hasovic2234Article2012
Advanced debugging - Part 2Primož Gabrijelcic2239Article2012
Object-Relational Mapping with TMS AureliusWagner Landgraf2243Article2012
Using Excel functions in DelphiNikolay Bilfeld2249Article2012
Unit testing and ’TestGrip’Marco Geuze2250Article2012
How to create a simple About screen? Questions and AnswersHenk Schreij2259Article2012
Writing Cross-Platform CodeAlexander Alexeev238Article2012
Solving equations using Regula FalsiPeter Bijlsma2314Article2012
Data-Aware FireMonkey Controls using LiveBindingsCary Jensen2319Article2012
Advanced debugging Tips and TricksPrimož Gabrijelcic2326Article2012
Extending TListBoxItem to customize list box behaviourJeremy North2329Article2012
Pascal for InternetPrimož Gabrijelcic2334Article2012
Pascal scores high notesSiegfried Zuhr2339Article2012
Introducing TTMSFMXGridBruno Fierens2343Article2012
Delphi XE2, iOS and SQLiteBob Swart2349Article2012
Meaningful colours or is it all gray?David Dirkse2352Article2012
How to develop n-tier applications for iOS using kbmMWRoger Nyberg2355Article2012
Interview with Kim MadsenDetlef Overbeek245Article2012
Sending mails using LazarusMichael Van Canneyt2410Article2012
Interview with Dmitry ArefievDetlef Overbeek2419Article2012
Smart Mobile StudioJørn E. Angeltveit2429Article2012
Interview with Marco CantuDetlef Overbeek2433Article2012
FireMonkey in Delphi XE3: FM2Marco Cantù2436Article2012
HTML 5Bob Swart2449Article2012
Interview with Michael RozlogDetlef Overbeek2452Article2012
XE3 Style DesignerJeremy North2456Article2012
Burgler detection using LazarusMichael Van Canneyt2462Article2012
Supporting new android features in old android versions with OxygeneBrian Long2468Article2012
Delphi XE3 Helper TypesBob Swart2476Article2012
Interview with Marc HoffmanDetlef Overbeek2479Article2012
Introduction to Databases Part 9: Overview of DataSnapCary Jensen2483Article2012
Software taxes - storageAlexander Alexeev2487Article2012
Interview with David I. (Intersimone)Detlef Overbeek2496Article2012
The Delphi HistoryDetlef Overbeek24101Article2012
From Delphi to the cloudBruno Fierens24106Article2012
Interview with Bruno FierensDetlef Overbeek24111Article2012
kbmMW as a RTMP media serverKim Madsen24114Article2012
Lazarus and dabatasesMichael Van Canneyt24117Article2012
Match5, a self learning board gameDavid Dirkse2511Article2012
Programming in Smart: Application DesignPrimož Gabrijelcic2519Article2012
TMS FlexCel for VCL and FireMonkeyAdrian Gallero2526Article2012
Delphi IDE TipsBrian Long2531Article2012
DataSnap: DBX vs. RESTBob Swart2540Article2012
Crowd FundingBJ.Rao2543Article2012
Displaying video files using Free Pascal and LazarusMichael Van Canneyt2552Article2012
High performance virtual filesystems with kbmMWKim Madsen2558Article2012
Introduction to Databases Part 10: IP-Based DataSnapCary Jensen267Article2012
How to prune a treeDavid Dirkse2616Article2012
How to display a YouTube clip?Henk Schreij2622Article2012
Programming in Smart: Supporting Multiple ResolutionsPrimož Gabrijelcic2632Article2012
HTML5 Builder DataSnap ClientsBob Swart2636Article2012
Object serialization using kbmMWKim Madsen2652Article2012
Introduction to thread programming in LazarusMichael Van Canneyt274Article2013
Introduction to Databases Part 11: DataSnap Filters and SecurityCary Jensen2713Article2013
Electronic document processing tools for Delphi made by GnosticeGrish Patil2723Article2013
Use of the "absolute" function abs(..)David Dirkse2736Article2013
Development for lazarusJoost van der Sluis2741Article2013
What is polymorphism?Vsevolod Leonov2748Article2013
Creating and using kbmMW as an Ajax back-end serverBenno Evers2752Article2013
NEW AND ENHANCED FEATURES IN DELPHI XE4Editor284Article2013
Alternative datastreams (ADS) (better inifile)Jean Pierre Hoefnagel2814Article2013
First Look at FireDACCary Jensen2816Article2013
Writing UI-Independent Code with Anonymous MethodsMarco Cantù2818Article2013
Introduction to Databases Part 12: A DataSnap ClientCary Jensen2823Article2013
Programming in Smart: RefactoringPrimož Gabrijelcic2834Article2013
Development for lazarus part twoJoost van der Sluis2842Article2013
Delphi XE4 iOS DataSnap ClientsBob Swart2852Article2013
Intro to kbmMW connectivity package 'Spider'Fikret Hasovic2857Article2013
Polymorphism in practiceAlexander Alexeev294Article2013
The Raspberry Pi, Pi Vision and Lazarus/FPCBJ Rao2914Article2013
FPC Hackathon 2013Michael Van Canneyt2922Article2013
UniDAC — unique components for DB application development for iOSBoris Matkov2925Article2013
1. Pascal Fundamentals: TActionlist, TImagelist and Image editorMichael Van Canneyt2931Article2013
2. Pascal Fundamentals: How long is a pice of string: Short strings and Ansi stringsHoward Page-Clark2937Article2013
Smart Mobile Studio - Multiple categoriesPrimož Gabrijelcic2941Article2013
Developing a virtual worldCary Jensen2945Article2013
The TMS iCLBy Bruno Fierens2951Article2013
Serialization using kbmMWFikret Hasovic2955Article2013
Creating an IOS applicationJeremy North304Article2013
Introduction Database Development Part 13: Connecting to Data with FireDacCary Jensen3018Article2013
Pascal Fundamentals: Understanding components Part 3: The TListBox componentHoward Page-Clark3028Article2013
Smart Mobile StudioJørn Einar Angeltveit3041Article2013
Programming with the leap motionMichael Van Canneyt3047Article2013
Lazarus Closed Source PackagesMattias Gaertner3056Article2013
Support for Word and LibreOffice Text Documents - FPVectorialFelipe Monteiro de Carvalho3060Article2013
Delphi XE5 and FireMonkey for AndroidBob Swart3069Article2013
Sciencepalooza Fact: Man causes the earth heatingYuri Matteman3074Article2013
The kbmMW authorization managerKim Madsen3075Article2013
Designing an API: common mistakesAlexander Alexeev31/328Article2013
Newest Leap developmentsMichael Van Canneyt31/3221Article2013
3D PrintingBj Rao31/3226Article2013
Kinect ?!Michael Van Canneyt31/3233Article2013
Smart Mobile Studio 2.0Primož Gabrijelcic31/3241Article2013
A simple superscript text editorDavid Dirkse31/3250Article2013
Using GEO services in Delphi applications with TMS componentsBruno Fierens31/3257Article2013
Correcting a bad API design:Alexander Alexeev31/3265Article2013
The maXbox Pure CodeMax Kleiner31/3277Article2013
Programming Bitmap RotationDavid Dirkse31/3298Article2013
Introduction to Model, View and View Model (MVVM) and the Caliburn Micro for Delphi frameworkJeroen Pluimers31/32102Article2013
kbmFMX for XE5 (android)Fikret Hasovic31/32113Article2013
maXbox Starter 5 Start with DLL A Library for AllMax Kleiner335Article2014
Suite Rays componentsRik Smit3314Article2014
Steps in MindScape AppView Step-By-StepJeroen Pluimers3326Article2014
Programming Truth Table reductionDavid Dirkse3346Article2014
Databases for XE6Cary Jensen3359Article2014
Updating DotTapperJeremy North3353Article2014
Six new ready to use components!Fikret Hasovic3365Article2014
Ode To the CodeCary Jensen344Article2014
Animation Lab for AndroidBoin Mitov345Article2014
All about understanding the RTTI / Attributes / Functional ProgrammingDetlef Overbeek347Article2014
Raize Components Version 6PART II ContinuationRik Smit3418Article2014
QR (Quick Response) CodesMax Kleiner3424Article2014
Image CompressionDavid Dirkse3429Article2014
Review : Documentation Insight by DevJet SoftwareJeremy North3436Article2014
Introduction Local SQL with FireDACCary Jensen3441Article2014
Unit testing - test driven developmentMichael Van Canneyt3446Article2014
Serving an off the shelf Content Management SystemKim Madsen3453Article2014
Smart Mobile Studio: Where to use it and with what? CommentChristan Budde3516Article2014
Building simple native applications for WindowsChristan Budde3517Article2014
node.js on a Raspberry PiChristan Budde3519Article2014
Debugging Techniques in LazarusHoward Page Clark3523Article2014
Start with GEO MapsMax Kleiner3540Article2014
A 3D Tic-Tac-Toe gameDavid Dirkse3545Article2014
Blazing Performance with FireDAC Array DMLCary Jensen3552Article2014
Creating custom edit descendants in XE7Jeremy North3557Article2014
Leap Motion Version 2Michael Van Canneyt3562Article2014
KBMMW and messaging (the WIB)Fikret Hasovic3564Article2014
A WYSIWYG math editorDavid Dirkse3610Article2014
Blue ToothJeremy North3616Article2014
3D Printing Lab (maxbox)Max Kleiner3623Article2014
Converting Delphi to Lazarus and Vice VersaEditor3628Article2014
Differences between Delphi and LazarusEditor3628Article2014
Lazarus for beginners: Starting your first programHoward Page-Clark3635Article2014
TMS XData and TMS Aurelius – Learning ExampleWagner Landgraf3640Article2014
UpdateMode and FireDAC DataSetsCary Jensen3650Article2014
AMQP (Advanced Message Queuing Protocol)Fikret Hasovic3654Article2014
Cloning FDMemTable CursorsCary Jensen37/3813Article2014
Floating points? -David Dirkse37/3820Article2014
The Leap Motion VisualizerDmitry Boyarintsev37/3823Article2014
Creating Applications for Mobile: How to make money with appsMark Wilcox37/3831Article2014
Migration to FastReport: How easy can it be ?Denis Zubov37/3837Article2014
TIOBE Index for January 2015Editor37/3845Article2014
Apple’s Guidelines for Creating and PublishingEditor37/3848Article2014
Google’s Guidelines for Creating and Publishing Android AppsEditor37/3853Article2014
Google’s help for developers for AndroidEditor37/3855Article2014
Lazarus for beginners 3Howard Page-Clark37/3862Article2014
WYSIWYG formatted: text & images editor for VCL & FireMonkeyBruno Fierens37/3871Article2014
Regular Expression ReportMax Kleiner37/3878Article2014
Regular Expressions Explained / ProgrammingEditor37/3888Article2014
Getting Started with the Raspberry PiSiegfried Zuhr37/3889Article2014
Using Free Pascal to create Android applicationsMichael Van Canneyt37/38104Article2014
Having fun with Delphi and AMQPKim Madsen37/38112Article2014
ClientDataSets and FDMemTables Compared: Part 1Cary Jensen3911Article2015
Accessing Preferences and Databases in Android (FPC)Michael Van Canneyt3922Article2015
Painting 3D Lissajous figuresDavid Dirkse3931Article2015
Checking your Android device is ready for developmentStephen Ball3936Article2015
Interbase Change ViewsStephen Ball405Article2015
From Delphi to Delphi, overview of the Delphi historyEditor408Article2015
Delphi - the cityEditor4013Article2015
Why the name Delphi?Editor4014Article2015
Introduction to FlatBox2D for Delphi XE8Pawel Glowacki4016Article2015
ClientDataSets and FDMemTables Compared: Part 2Cary Jensen4024Article2015
Start with Function Testing (maXbox)Max Kleiner4031Article2015
Working with Bluetooth beacons in Delphi XE8Jeremy North4040Article2015
Security And Safety In ApplicationsAndrea Raimondi415Article2015
Beginning Of Time... The Water ClockEditor419Article2015
The New Lazarus 1.4Editor4114Article2015
Security In Applications: Password HandlingAndrea Raimondi4118Article2015
In Remembrance Of Alan TuringEditor4123Article2015
Rest Clients: Using The Google Apis In Free PascalMichael Van Canneyt4125Article2015
Arduino: The Visuino Project - Part 1Boian Mitov4137Article2015
Working With Google Merchants Rating Data Using kbmmwKim Madsen4143Article2015
Quantum ComputingEditor425Article2015
Thales Of Miletus - A Pre-Socratic Greek PhilosopherEditor429Article2015
Arduino: The Visuino Project - Part 2Boian Mitov4214Article2015
Getting Started With The TMS Planner For FiremonkeyBruno Fierens4222Article2015
Mapping Using DelphiPeter Van Der Sman4228Article2015
Log, Debug And Audit The kbmmw WayKim Madsen4233Article2015
Free Pascal Compiler 3.0 In PreparationMichael Van Canneyt436Article2015
Overview Of Delphi To Delphi HistoryEditor438Article2015
Pythagoras Of Samos, Not The Inventor Of The A^2 + B^2 = C^2Editor439Article2015
Arduino: The Visuino Project - Part 3Boian Mitov4312Article2015
Fast Reports VCL In A NutshellJohn Kuiper4330Article2015
Brand Your Own Remote Desktop SolutionKim Madsen4340Article2015
Overview Of Delphi To Delphi HistoryEditor446Article2015
EuclidesEditor447Article2015
An Agep UzzleDavid Dirkse448Article2015
Arduino: The Visuino Project - Part 4Boian Mitov4412Article2015
Database Workbench 5Peter Van Der Sman4428Article2015
Tips And Tricks With KBM MemtableKim Madsen4439Article2015
Overview Of Delphi To Delphi HistoryEditor45/468Article2015
Plato And Platinic SolidsEditor45/469Article2015
A Simple Editor For In-Line HelpDavid Dirkse45/4612Article2015
FindFirst/FindNext And The Power Of HabitsHeiko Rompel45/4618Article2015
Android Programming In Free Pascal Networking External Code And ThreadsMichael Van Canneyt45/4620Article2015
Rad Studio 10 Seattle IntroductionEditor45/4629Article2015
Using Azure Translator Services With DelphiStephen Ball45/4644Article2015
How To Use Fmx: Tframestand Easily Use Tframe(S) In Fmx ApplicationsAndrea Magni45/4654Article2015
Delphi Building Blocks - Advanced CollectionsBoian Mitov45/4662Article2015
Maxbox Starter 18 Start With Arduino Programmingv 3.1Max Kleiner45/4672Article2015
Archimedes Editor475Article2015
Installing Lazarus On Mac Os XMichaël Van Canneyt478Article2015
Using “Raspberry Pi” As A Flexible BeaconDanny Wind4712Article2015
The Towers Of HanoiDavid Dirkse4719Article2015
Presenting A Fast & Feature-Rich Multicolumn Treeview For DelphiBruno Fierens4723Article2015
The Enhanced Rtti (Runtime Type Library)Boian Mitov4729Article2015
Getting Things Done At Time, Every TimeKim Madsen4737Article2015
A Microseconds Counter Component In DelphiDavid Dirkse485Article2015
Watch Your Calories Using The Nutrition Monitor!Peter Bijlsma487Article2015
Custom Forms In DelphiMichaël Van Canneyt4819Article2015
Installing Lazarus On Linux MintMichaël Van Canneyt4826Article2015
Connect Iot With The Cloud Using Tms Lcl Cloud PackBruno Fierens4830Article2015
Time Is On My Side - MaxboxMax Kleiner4836Article2015

Enjoy - Semper Fi
Gunny Mike