Date added/modified: 02 Jan 2001
Latest note: Since moving to Delphi 5, I have found that the same problem exists in Delphi 5. But, I have worked around it as indicated.
Most of my applications are non-database utilities and are still in Delphi 3. Although, I bought Delphi 4 long back, I was reluctant to immediately port all my applications to Delphi 4. This intuition comes from a long association with programming products. Who knows what new problems might be created with a newer product? Well, my intuition seems to be right. Here is the story.
Instead of rereleasing my applications with Delphi 4, I ported only a pilot product to Delphi 4. Everything seemed to work fine and I was about to decide to switch all my remaining applications to Delphi 4. Suddenly, I found that this new product was too slow in filling up the background report view. I remembered using the Delphi 3 version which was fast enough. No code had changed. I again ran Delphi 3 executable and it worked fast. Naturally, I suspected something wrong in Delphi 4 VCL.
Well, after some investigation I found that in TListView, I was using a width of -1 and -2 for two of the columns. This made Delphi 4 VCL to fill up the list view very slowly, in spite of using beginupdate/endupdate. The same settings for widthType in Delphi 3 worked OK. When I changed the width to a positive value, the problem was fixed!
There are other differences too. While Delphi 3 TListView always stores width as positive value, irrespective of what you store in widthType, in Delphi 4, the width is always same as widthType.
On the other hand, the new TListView in Delphi 4 has virtual mode. So eventually, if I need to use it, I will have to go to Delphi 4. Now, that Delphi 5 is released it might be better to drop Delphi 4 entirely and directly go to Delphi 5. But, all that can wait till I need the new features. As a developer of non-database utilities, I am quite happy with Delphi 3