Two months ago, I almost had Version 1.0 of Behold ready. It was just a matter of finishing the User Guide and while doing so, fixing any last bugs I’d find.
Then I ran into a roadblock. I wanted to make sure it was easy enough to edit the Tag Text and the Report Items Text. I wanted it to be easy for anyone to update these for their own language. That would allow language files to be created, so that the Everything Report could be displayed in various languages. I’d then maintain a collection of the various language files that users send in and I’d make them available for free on the Behold website.
But it worked badly. The grids that are on the Organize Tags and Reports pages are from the ElXTree component of the ElTree component set put out by LMD Innovative. First I was surprised to see the action of the Inplace Editor when trying to edit a tag. Some things worked, but some didn’t. You click on the tag to edit and it goes into edit mode and gets highlighted. Click on another, and a bunch of flashing occurs before it goes into edit mode for the other. Right click when editing and a menu pops up with Undo, Cut, Copy, Paste, Delete and Select All. But of the shortcuts Ctrl-Z, Ctrl-X, Ctrl-C, Ctrl-V, Del, Ctrl-A, only Ctrl-V and Del worked. Pasting Unicode text to the editor does not work. You hit enter, and it finishes editing, but I hoped it would go to the next line to make editing faster like in Excel. It didn’t, and arrow-up and arrow-down keys didn’t either. You make some edits and then click on a button, and it completed the edits but didn’t execute the button as it should. You make some edits and click on another window (e.g. the Everything Report), and it completes the edits but doesn’t make the other window active and execute what you clicked on. All these gave a horrible experience for me that I knew needed to change. Liftoff had to be delayed.
Just about every fix was quite involved. I had to include LMD’s source code so I could debug and modify it. I never like hacking a 3rd party package, but I originally expected simple fixes and that this would go smoothly. But their code is complicated, and filled with commented out statements, some of which I later found I had to uncomment to get the solution I wanted. There was no documentation on these things. I posted several queries on LMD’s ElPack newsgroup, and some Windows based questions to my StackOverflow friends, and got some of the answers I needed, but I was going deeper and deeper into the quagmire.
About 3 weeks ago, after several episodes of solving one problem that resulted in several more, I started getting frustrated. These components were event based, and sent out Windows events that aren’t easy to track in the Delphi debugger. I’m used to fixing my own code which is much more straightforward and easier to fix than other people’s code. And I shouldn’t be having to fix someone else’s code, should I? So then I considered replacing the whole ElXTree component.
I looked at several different String Grid routines for Delphi, and started to see some nice things about TmsSoftware’s TAdvStringGrid. It’s inplace editor especially seemed to be smooth and they had lots of nice demos. I would have to purchase it and replace all my current ElXTree grids (I have 4 in the Organize Form and 1 in the FindFiles Form). That would be at least a few weeks work because of the way I integrated my data with the ElXTree grid.
But then I found a few flaws in the TAdvStringGrid. Alas nothing is perfect. Seemingly small things (like Ctrl-A not working when it should have and Ctrl-U being a single undo), but that made me think that I might just be trading one set of problems for another. TMS components do look good, and I wouldn’t have minded changing to them, but there was one big problem. They had no good virtual TreeView component. I would still be stuck with having to load ElPack for the TreeView even if I used TMS for the Grid. No, I didn’t want the extra complications of yet another component pack at this time when I’m about to try to make my monumental leap to Version 1.
As of yesterday, I was solving my last problem related to my Grids and Inplace Editors. It was the tenth time I was solving the “last” problem. So I was hopeful I’d soon make progress.
Then last night, during debugging, Delphi went crazy and started popping up windows and had taken over my screen as if the enter key and others were being continually pressed. This had never, in 15 years of Delphi programming, happened to me. I tried to squeeze Ctrl-Alt-Delete in there and it managed to bring up the Windows Task Manager. However, I couldn’t get to it with all the other windows popping up. So I did what had to be done and held the power button to force a shutoff.
I starting up my computer again. Everything seemed okay. Started up Delphi and got a nasty error message:
So I ran the registration Wizard again as it said, dug up my original registration code from when I bought Delphi in 2008, typed the infinitely long code in, restarted Delphi again, and … the same error message popped up. **sigh**
It seems that Embarcadero’s online registration is not properly reactivating valid registration codes from 3 years ago which is also a couple of versions back from the current Delphi XE. Maybe I’ll have to contact them to see what will have to be done.
Today, one last attempt. I found a backup I had made of my Delphi license files. Replaced the corrupted license files with the backup. Didn’t think it would work, but it surprised me and did. Delphi started up again. It also made me reregister AQTime (my profiler), but that went okay.
Phew. All running again, and hopefully I’m on track again to solve this last bug and then finish off the User Guide and get Version 1 out. Deja vu. I’ve said that before.