Saturday, May 23, 2009

Nearly Dead: AppControls Reviewed

AppControls / Delphi 2009 Reviewed
Vendor's URL: appcontrols.com
(Utilminds is off-line)

AppControl's history stopped at Year 2006 (see Version History) and then they released some updates for Delphi 2007 (in March 2007).

My review is based on AppControl / Delphi 2009 version. AppControls is simple library made for making tedious tasks easy.

Non-visual components were "nothing special".

Initial observation was Unicode problems, or rather, using WinExec(PAnsiChar) instead of Modern ShellExecute(). Most of codes uses "String" and obviously, the author never bothered to make a "Unicode" version of this library (until CodeGear Delphi 2009 came out and forced every vendor to upgrade to Unicode).

Most of code is simple, straight forward, like a collection of snipplets from Torry's or DelphiPages. For example, Application Mutex is straight forward. Do you really need to wrap it up in a component? Same goes with AutoRun (put your program to AutoRun when Window starts), AppEvents (Application events) (this is now in Delphi as AppEvents), TopMost (Force Window to Foreground).

Next observation was acInfoBox, or simple MessageBox replacement. I would suggest people to look for BradStower's freeware DontShowAgain MessageBox instead (it's cheaper by US$20 per developer).

Briefly:
AppAutoRun -- you can do it add/delete via registry to Windows\Run

AppStartCounter -- increment a number inside registry

CronJob -- set a timer and run lookup a time-list (e.g., run @7am)

AccurateTimer -- get a real profiler instead if you need to find out why your app took so long

AwayTimer -- suggestion: don't hook the keyboard and mouse during hiberation. that hangs the WinXP computer

AppEvents -- use the real TAppEvents instead

AppCursor -- Suggestion: too many hooks in 1 application spoils the whole application.

acOnlyOne -- use CreateMutex instead. (Does not work when App is minimized to tray)

acTrayIcon -- use TTrayIcon instead.

acShortcut -- use Jedi instead. Jedi is Unicode-aware (uses Widestring)

acFileextension -- use Jedi File association instead (at least jedi is Unicode-aware)

acClipboard -- does not support CF_RTF or CF_HTML. Also, only supports BMP.

acUpgrader -- does not support resume. it uses memorystream. if your upgrade is 10megs, it eats up alot of memory

acRssFeed/RssfeedContainer -- does not support atom, rss2, and rdf.

acAppBar/acFormMagnet -- try using freeware 'magnet' component instead. this component uses alot of hooks

acCaptionButton - titlebar buttons. does not work well on Vista, Citrix, Windows Terminal Server, Windows 2008. Also does not work when Title bar is skinned. (you use different Windows themes or Windock)

acAnimationEffect - is it necessary to animate form when loading/closing?

acWin2kEffects - n/a - features built-into Delphi 2005 and above.

acFormHints/acFormHelp - (same problem with acCaptionButton)

acSystemMenu - use freeware instead (same hooking problem as above)

acFormTopMost - google for "DSiForceForegroundWindow".

acFormRoller - google for "TurboPower Essentials".

acFormRestrictions - see "Anchors"

acFormSizeGrip - see "bsSizeable" in your Form properties

acFormHook - see "AppEvents"

acFormBackground - flicker issue. use others (vendor components) instead.

acEmbeddedForm - use TFrame instead

acFileStorage - use Resources / BRCC (Borland Resource Compiler) instead

acWavePlayer - use "PlaySound" Win32 API instead

acCursorLock - use "ClipCursor" Win32 API instead

acThread - use non-VCL based threading instead. This component is linked to TForm and hooked events.

acInfobox - use Brad Stower's DontShowAgain / or Jedi MessageBox instead

acProcessList - use Jedi's Process List instead

acConnectionList - use Jed's instead (Jedi has enumerations for Cable Modem and Router)

acIESniffer - use Balsa's HTML freeware component. That has more features

Visual Components
For the life of me, is it necessary to have a UrlLabel? or simple button that does nothing much?

acButtonsPanel - not enough buttons - this only provides Apply, Cancel, Custom, Help, OK.

acButButton - does not emulate IE flat or Office XP features
(fair enough, I did not include XP, Vista, MS-Money or Office 2007 styles)

acCheckGroupBox - not sure what the idea is to include both CheckBox and Groupbox together.

acSplitterPanel - no way to specify splitter (the thing in the middle between two panels) style.

acHeaderPanel - I need to implement docking by myself...

acPicturePanel - use TPanel, TBevel, TLabel together to achieve same effect

acLinksPanel - use TListView instead (at least, that allows multiple columns)

acDragPanel - use TPanel and track MouseMove

acEdit - has no "flat" feature

acNumberEdit - does not support 2^64 integers.

acIPEdit - use Microsoft's Common Controls instead/ or MaskEdit

acComoboDatePicker - use normal ComboBox with items Jan...Dec

acTrackBar - does not paint correctly in Windows Vista, Windows Terminal Server and Windows 2008.

acTreeView - not much difference. Suggest you use TTreeview.

acListView - does not support "flat" style.

acStatusControl - not sure why you need this for. Would suggest BradStower's StatusBar component.

acHeader - not skinned correctly in Windows/Vista/Windows 2008/Windows Terminal Server/Citrix.

acHTMLViewer - does not support enough tags. Currently at HTML 1.0 tags (or maybe worse)

acSystemInfo - simple query of System Information
(suggestion to vendor: why don't you make it return SystemInfo to TStringList so I can report it without writing reams of code to connect to your component)

acDateCalc - use FormatDateTime(TimeStart - TimeStop) instead

acUnixCrypt - Unix crypt with salt
(suggestion to vendor: would you mind making the DFM not store the salt and password?)

acStringListContainer - use Jedi's instead. Jedi's string list container allows storing multiple texts at once

acTextTemplateConverter - use StringReplaceText(...) instead

acSimpleTCPServer - can we suggest ICS or Synapse or Indy?

acQuickAboutBox - can we suggest you spend 15 minutes to put a Dialog, 4 Labels "Application 1.0", "Copyright", "Version", "YourWebsite.com" and "OK" button?


Pricing
For US$149 per developer or US$745 for 5 developers, this sounds expensive for simple library.

For US$149, there's TMS Library (with more components and better quality), LMD basic (for 1 user), ElPack basic (for 1 user) and other component packs competing for your money.


Conclusion
This is simple library and not updated much since 2006. DelphiHater wishes the author would spend a bit more time on this library and try to answer questions on Borland/Imprise/CodeGear/Embarcadero newsgroups before customers feel left out in the cold with no-replies.

[corrections: Typo's]

No comments: