Nhiều lần sau thời đại Windows 98, chúng tôi đã trải qua một số hộp thoại mất Z-Order của họ và di chuyển trở lại biểu mẫu trước.Delphi - Cách ngăn Biểu mẫu/MsgBox di chuyển dưới biểu mẫu trước?
Ví dụ:
Dialog1.ShowModal;
Dialog1.OnClickButton() : ShowMessage('anything');
Khi MessageBox xuất hiện, đôi khi nó không có trọng tâm và được di chuyển dưới Dialog1. Người dùng bị nhầm lẫn về điều đó, họ nói: Ứng dụng của tôi bị đóng băng !!! Nhưng nếu họ sử dụng Alt + Tab để di chuyển đến ứng dụng khác và ngược lại, tiêu điểm sẽ trở về MessageBox và nó sẽ là cửa sổ nền trước.
Chúng tôi đã trải nghiệm điều này với các biểu mẫu ShowMessage, MessageBox, biểu mẫu bình thường và cũng QuickReport.
Có ai biết về điều này không? Nó là một lỗi Windows? Làm thế nào bạn có thể ngăn chặn nó? Làm thế nào để nắm bắt điều này?
Nhờ sự giúp đỡ của bạn: dd
Tôi thực sự cho rằng SAU Win98, vì vậy tất cả các HĐH (Win7 cũng) bị ảnh hưởng bởi sự cố này. Chúng tôi đã sử dụng Delphi 6 Prof, vì vậy các thuộc tính không hoạt động với các biểu mẫu Mặc định.
Ai đó nói rằng hộp thoại tin nhắn có thể điều khiển được với MessageBox + MB_APPLMODAL. Đây là tin tốt, nhưng chúng tôi có nhiều hình thức và thành phần cũ, công cụ của bên thứ ba.
Vì vậy, thật khó để tạo ra một ứng dụng hoàn toàn mới với việc thay thế các biểu mẫu.
Nhưng chúng tôi sẽ cố gắng thực hiện việc này.
Tôi nghĩ câu trả lời là vấn đề nửa ứng dụng và một nửa vấn đề với Windows. Nếu Windows đôi khi xử lý điều này, và đôi khi không - đó có vẻ là một lỗi Windows. Nhưng nếu chúng ta có thể ép buộc tạo cửa sổ phương thức tốt thì đó là lỗi lập trình.
Ai đó có thể giải thích cho tôi ý nghĩa của cờ WS_POPUP là gì? Nó có tác dụng phụ hay không?
Thanks: dd
Tôi cũng thường gặp vấn đề này, tôi cũng chưa tìm thấy câu trả lời. Mong đợi những gì mọi người đã đưa ra. –
Với phiên bản này, điều gì đang xảy ra? –
bạn là Windows 98? Wow. Như Sertac hỏi, phiên bản Delphi là rất quan trọng. Delphi 2007 và sau đó có một giải pháp thay thế. –