Search code examples
delphiclient-serverserver

How to solve DSServerModule1.ClientHeight: Property does not exist error


I wrote an application that uses a firebird database, using a server and a client. I originally coded the application using Delphi XE2 and all worked fine. I have now moved over to Delphi XE6.

I recompiled the server and there was no errors, but now that I recompile the client it gives me the following error:

ProjectPiping.exe raised execption class TDBXError with message "Remote error: Error reading DSServerModule1.ClientHeight: Propery CliehtHeight does not exist.

I have read online that you need to change the dfm file ontop from Object to Inherinted but that made no difference.

Is there anyone that can assist me as I do not see anyway that I can solve this except going back to Delphi XE2


Solution

  • Missing property errors are common for Frames and DataModules that do not directly inherit from base Delphi TFrame and TDataModule class. Under some circumstances (that change with every Delphi version) Delphi will not be able to access Frame or DataModule ancestors in order to determine whether it deals with TFrame or TDataModule descendant. When that happens, it will wrongly interpret Frame/DataModule as Form and pollute their .dfm with Form specific properties.

    You don't have to rollback to XE2 and you can fight the issue by removing bad properties from .dfm file using Notepad or similar editor. Since this is operation you will be bound to repeat often while doing design work on such Frame/DataModule, version-control can be of great help. Just don't commit changes that are not supposed to be there. Another way of fighting against sporadic changes in .dfm files is to make them read-only once you have finished your design-time work with them.

    Correct empty DataModule .dfm file:

    inherited DataModule1: TDataModule1
      OldCreateOrder = False
      Height = 150
      Width = 215
    end
    

    Broken empty DataModule .dfm file

    object DataModule1: TDataModule1
      Left = 0
      Top = 0
      ClientHeight = 188
      ClientWidth = 303
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
    end