2011-03-30 14 views
7

Sau nhiều năm phát triển Delphi, bây giờ tôi có hàng trăm biểu mẫu được chia sẻ trong suốt các Ứng dụng của chúng tôi. Biên dịch từ Delphi 7 đến XE, do đó một dạng có thể được mở trong bất kỳ IDE nào. Việc bổ sung thuộc tính Explicitxxx nổi tiếng sau Delphi 7 có các giải pháp để tránh một biểu mẫu vô tình có được các thuộc tính mà các trình biên dịch trước đó không thể xử lý (ví dụ: Andreas's DDevExtensions) nhưng tôi muốn một 'chuyển đổi' tích cực hơn ngăn cản Delphi tạo hoặc lưu bất kỳ biểu mẫu nào sửa đổi ở tất cả. Giai đoạn.Có một tùy chọn Delphi để 'khóa' thiết kế (bố trí) của một biểu mẫu chống lại các thay đổi ngẫu nhiên không?

Tất nhiên bạn có thể sử dụng cờ chỉ đọc và hệ thống kiểm soát phiên bản cung cấp phương tiện bổ sung cho thấy sự thay đổi đó đã xảy ra. Những gì tôi thực sự muốn mặc dù là một công tắc {$ LockDFM} mà tôi có thể đặt vào đơn vị của biểu mẫu hoặc tùy chọn menu ngữ cảnh khi xem bố cục biểu mẫu.

Có ai có thể nghĩ ra một cách gọn gàng để đạt được điều này không?

Cảm ơn

+5

Tôi không biết gì cả. Tôi dựa vào VCS của tôi và hợp nhất chương trình để giải quyết vấn đề này. Thêm các tiện ích tuyệt vời của Andreas. Giống như bạn vậy! –

Trả lời

6

Điều duy nhất tôi có thể nghĩ đến (trừ các tùy chọn chỉ đọc/VCS bạn đề cập) là tùy chọn menu Edit của Lock Controls. Điều này đặt cờ ngăn các điều khiển bị di chuyển xung quanh. Tôi không chắc nó sẽ thực sự tốt đến mức nào, vì tôi chưa bao giờ thử nó; Tôi chỉ biết nó ở đó.

+1

Điều khiển khóa đáng buồn không hoạt động cho mục đích này. Khi bạn mở một biểu mẫu, bạn phải tắt/bật lại các điều khiển khóa để nó hoạt động trên biểu mẫu đó nhưng tại thời điểm đó, thiệt hại đã được thực hiện. (QC82764) – PetriW

+0

@PetriW: Cảm ơn. Tôi không biết về báo cáo QC đó. Như tôi đã đề cập, tôi chưa bao giờ sử dụng nó. –

1

Trong thời gian thiết kế, có Edit-> Lock Control.

LE: đây chỉ là để thay đổi kích thước/định vị lại các điều khiển trên biểu mẫu. Liên quan đến ObjectInspector Tôi không biết nếu có bất cứ điều gì có thể 'khóa' các giá trị được đặt ở đó (để nhà phát triển không thể thay đổi chúng).

+0

Có, tôi cần một cái gì đó để ngăn chặn Delphi từ 'nâng cấp' cấu trúc DFM trong bất kỳ cách nào cả. –

3

Helo

Tôi khá chắc chắn rằng Delphi không có thứ gì như vậy. Tôi cũng đang tìm kiếm giải pháp cho vấn đề này.

Nhưng, có một điều bạn có thể làm: Bạn có thể viết trình bổ sung Delphi của riêng mình bằng OTA (API công cụ mở). Tôi biết rằng có một vài lớp học có thể thông báo cho bạn khi một cái gì đó sắp được lưu lại. Bạn có thể chặn sự kiện này và quyết định xem bạn có muốn lưu nó hay không (trong trường hợp của bạn, nếu đó là DFM).

BTW, nếu bạn có kế hoạch thực hiện thành phần như vậy, hãy cho tôi biết. :)

EDIT:

Tôi đã tìm thấy một đoạn mã có thể giúp bạn. Được trích xuất từ ​​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

Thú vị, cảm ơn. –

1

Về cơ bản, không. Ngoài các đặc tính kích thước và vị trí rõ ràng của f'ing (tha thứ tiếng Pháp) mà IMO không bao giờ nên có trong .dfm, có một số thành phần của bên thứ ba sẽ thay đổi nội dung chỉ bằng cách bạn xem biểu mẫu. F.x. Các thành phần TMS sẽ cập nhật số phiên bản ngay cả khi bạn không thay đổi gì kể từ phiên bản trước đó của các thành phần của chúng.

Các vấn đề liên quan