Tôi vừa nhận thấy rằng một trong rất (rất) điều khiển tùy chỉnh cũ của chúng tôi (không phải do tôi tạo) có handler WM_SIZE
bài này (tôi đã sử dụng một TPanel
vào đây để demo):Điều gì xảy ra khi trình xử lý tin nhắn không gọi được kế thừa?
TPanel = class(ExtCtrls.TPanel)
private
procedure WMSize(var Message: TWMSize); message WM_SIZE;
end;
procedure TPanel.WMSize(var Message: TWMSize);
begin
DoSomethingWhenResized;
end;
Các inherited
không phải là được gọi là. các DoSomethingWhenResized
tạo ra một bitmap gradient được lưu trữ được sử dụng trong quá trình sơn của điều khiển.
Every thing "ngoại hình" và hoạt động tốt, nhưng tôi chỉ tự hỏi, nếu bất cứ điều gì có thể đi sai bởi không gọi handler inherited
đầu tiên?
Tùy thuộc. Điều duy nhất xảy ra là mã của tổ tiên của trình xử lý tin nhắn này không được gọi. Nếu bạn tự xử lý thư, bạn không cần phải gọi 'thừa kế'. – Victoria