Shutdown Timer
Here’s the latest version of my Shutdown Timer. I didn’t plan to do this actually; but just in case I need it someday.
Developed using Delphi 7.
Here’s the latest version of my Shutdown Timer. I didn’t plan to do this actually; but just in case I need it someday.
Developed using Delphi 7.
It’s been several years since I had this stupid bug. I made a program using Delphi 6 that uses TeeChart. The program works fine.
Several months later, I changed platform to using Delphi 7. I’ve installed TQReport and TQRChart (TeeChart) into Delphi 7 (Since QReport is no longer installed by default in Delphi 7). The program works fine.
Then I decided to add some graphical theme into the software. It works fine too, unless my client finally notices a bug. The program will immediately generate a Stack Overflow when my program prints more than one graphical report.
The funny thing is, it fail to work on most computer (including my PC!), but one; the one that has the Windows Classic theme.
My first guess would be my graphical enhancement. But after I double check, I am using nothing but merely TImage all around the place. That bug must come from somewhere else.
Months go by, and I still couldn’t found the remedy for that problem, until I accidentally found an interesting article in the internet: XPManifest and TeeChart will generate a Stack Overflow.
Surprised, I checked my program again. Yes, it definitely uses the advantage of XPManifest. Guess what, after removing the manifest, I am free of that stupid bug. (Along with the good XP controls…, sigh)
Then again, I still don’t understand why that Stack Overflow occurs when XPManifest and TeeChart goes together… Oh well
Just in case you don’t know that QuickReport is not included on Delphi 7 installation, here’s how to enable QuickReport:
Notice that the QuickReport component tab is now available.
Update: I forgot to add two additional Package, the TeeChart for QuickReport and TeeChart, that will be required to use QRChart capability.
I’m having a little trouble connecting to my own laptop from my newly installed PC. The problem seems to come from my PC, since other PCs connecting to my laptop work perfectly fine.
While browsing for solutions, I found a simple yet descriptive solution to my problem:
“On Windows XP, by default, you can not logon remotely (e.g. using a Network logon) if your user account does not have a password.”
Yes, it seems that I have to create a password for my account before I attempt to connect to other PCs in the network.
Wow, I’m using Windows this whole time and I didn’t realize this?
I’m now translating all my articles to english. This probably better since more people will benefit from reading this article, not only several who speaks my native tounge.
This probably the best time though, if I waited any longer, who knows how many articles I should rewrite
One thing that keeps me worried when installing a web based application in my client’s computer is the browser dependency. There’s usually something going wrong when porting my web application from my stable development environment to the client’s.
Sometimes a visit to the client’s computer is like opening a birthday present. We don’t know for sure whether the inside is good, useless, or full of crap. Various clients prefer various browsers, which generally result in either my CSS isn’t supported, some plug-ins reject my script, using a very old version of Internet Explorer, the screen is less than 1024×768 and we couldn’t find the video driver, or worse, all combined.
There are some alternatives:
The third option sounds valuable. But instead of TWebBrowser, we’ll be using TMozillaBrowser to develop our own browser using Mozilla ActiveX Control. The details can be found here.
How do we do that
Here’s a step by step solution: Read more »
I found a website link when crawling the web, named JEDI Visual Component Library. Somehow I believe the initiator of this project is a big fans of StarWars. Maybe it’s just me.
It’s a collection of great components for Delphi, which lead me to believe I found a treasure.
After I downloaded the ZIP file, I read the manual carefully but cannot found an instruction of installation. No, installing the DPK itself is useless.
I did spotted an install.bat file, but I can’t make it work.
After some googling events, I saw a light of hope, and managed to install it successfully. I’ll describe them in a very short steps:


I’m still trying to figure out how to use them in my projects. Maybe I’ll add more entries after I learned some.
This printer gives me quite a problem when installing it at the first time, namely the serial one. Simply just clicking the driver installer will not do the trick; making it work the way I want it is another task on hand.
Here’s what I probably have to note after successfully installing it:
Normally, in case you forgot your manual, the default settings are:
Make sure the port settings on the printer sheet completely match these default settings, or else nothing would work, or if you’re lucky, some garbage stuffs might come out.
Hopefully not a spam
I’m using splash screen for quite a while. But to realize I’m doing it in a very wrong way is another.
I usually used my Splash Screen as the main form (Since it’s the first one to show up). The problem is I can’t CLOSE it (by doing that will also close the application), and I looked like a totally script kiddies when my code is published. Only God knows what kind of mayhem I produced by using such technique.
Here’s how to make a better (and professional) splash screen
It’s been days since I’m working on a bug which always generates Access Violation errors.
By slicing and analyzing the pattern, this error always occurs when I’m trying to Free and NIL an object. I’m pretty much confident for the array index, so it should not be the reason for this error.
procedure FreeButtons(Buttons: TButtons); var Cnt : integer; begin for Cnt := Low(Buttons) to High(Buttons) do begin FreeAndNil(Buttons[Cnt]); end; SetLength(Buttons, 0); end;
This error appears after I ported my old SDI framework into an MDI one. It works perfectly fine earlier, but now definitely gives me some headache. I vaguely presume the reason behind this is the component ownership, but I still hasn’t convinced yet.
Then I stumbled on an article at http://delphi.about.com/od/kbcurt/a/dynamiccreation.htm about dynamic object creation. This article point out that if we’re going to free an object later, we should assign NIL as its parent.