2013-02-12 27 views
8
Sau đây là những câu hỏi tôi đã đăng gần đây: Can a Component Editor be executed on multiple components?

Làm thế nào để cập nhật thanh tra đối tượng Delphi?

Tôi đã tạo một ComponentEditor cho một thành phần mới khi được thực hiện hiển thị TOpenDialog để chọn tệp cấu hình. Khi một tệp được tải, tôi đọc dữ liệu và sao chép các giá trị vào thành phần gọi (là Component vì đây là một TComponentEditor).

Không có vấn đề gì cả, ngoại trừ việc Object Inspector không cập nhật để phản ánh các giá trị mới được thay đổi - Nó chỉ cập nhật khi nhấp lại vào thành phần trong Designer. Nó có thể không có vẻ như một thỏa thuận lớn, nhưng tôi cần Object Inspector để cập nhật chính nó bằng cách nào đó để tôi có thể nhìn thấy các thuộc tính đã thay đổi thành công (mà không cần phải chuyển tập trung trở lại để kiểm soát).

Vì vậy, có cách nào để Delphi biết rằng cần cập nhật/làm mới Thanh tra đối tượng không? Tôi

Trả lời

7

Sau khi sửa đổi các thành phần khi cần thiết, biên tập thành phần của bạn cần gọi IDesigner.Modified() phương pháp, ví dụ:

procedure TMyComponentEditor.ExecuteVerb(Index: Integer); 
var 
    Dlg: TOpenDialog; 
begin 
    ... 
    Dlg := TOpenDialog.Create(nil); 
    try 
    ... 
    if Dlg.Execute then 
    begin 
     ... 
     Designer.Modified; 
    end; 
    finally 
    Dlg.Free; 
    end; 
    ... 
end; 
+0

hoàn hảo cảm ơn, tôi sẽ phải nhớ 'Designer' từ khóa. –

+5

Nó không phải là một từ khóa, nó là một tài sản của 'TComponentEditor'. –

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