Is there a Delphi option to 'lock' the design (layout) of a form against accidental changes?

前端 未结 4 547
别跟我提以往
别跟我提以往 2020-12-19 05:10

After years of Delphi development I now have hundreds of forms shared throughout our Applications. Compilation ranges from Delphi 7 through to XE, thus one form might be ope

相关标签:
4条回答
  • 2020-12-19 05:23

    Helo

    I am pretty sure that Delphi has no such a thing. I have been searching for a solution to this problem as well.

    But, theres one thing you can do: You can write your own Delphi addon using OTA (Open Tools API). I know that there are a few classes which are able to notify you when something are about to be saved. You can intercept this event and decide if you wanna save it (in your case, if it is a DFM).

    BTW, if you have plans to do such component, tell me. :)

    EDIT:

    I have found a piece of code that may help you. Extracted from http://www.gexperts.org/otafaq.html

      TMyFormNotifier = class(TNotifierObject, IOTANotifier, IOTAFormNotifier)
      protected
         procedure FormActivated;
         procedure FormSaving;
         procedure ComponentRenamed(ComponentHandle: TOTAHandle; const OldName, NewName: string);
      end;
    
    0 讨论(0)
  • 2020-12-19 05:29

    Basically, no. Aside from the f'ing (pardon my french) explicit size and position properties which IMO never should have been in the .dfm, there are some third party components will change stuff just by you viewing the form. F.x. TMS components will update a version number even if you didn't change a thing since the previous version of their components.

    0 讨论(0)
  • 2020-12-19 05:33

    In design time there is Edit->Lock Control.

    LE: this is only for resizing/repositioning the controls on the forms. Concerning the ObjectInspector I don't know if there is anything that can 'lock' the values set there(so the developer can not change them).

    0 讨论(0)
  • 2020-12-19 05:42

    The only thing I can think of (other than the read-only/VCS options you mentioned) is the Edit menu's Lock Controls option. This sets a flag that prevents controls from being moved around. I'm not sure how much good it would actually do, as I've never tried it; I just know it's there.

    0 讨论(0)
提交回复
热议问题