2012-04-24 30 views
10

phím tắt Ctrl+Backspace thường xóa từ bên trái khỏi dấu mũ. Nhưng nó không hoạt động trong bất kỳ điều khiển Delphi tiêu chuẩn nào bạn mong đợi (TEdit, TMemo, TComboBox ect.). Điều thú vị là, Ctrl+Delete chỉ hoạt động tốt.Ctrl + Backspace trong Điều khiển Delphi

Có ai biết cách chỉnh sửa hành vi này dễ dàng không?

Tôi biết rằng ghi đè thủ tục KeyDown sẽ làm điều đó, nhưng điều này khá phức tạp vì KeyDown phải được ghi đè cho mọi thành phần.

+0

Đây không phải là vấn đề cụ thể với Delphi. Thật vậy, 'TEdit' và các điều khiển khác chỉ đơn thuần là trình bao bọc cho các điều khiển Microsoft Windows, và chúng hoạt động như thế này. Hãy thử, ví dụ, hộp chỉnh sửa trong hộp thoại 'Chọn phông chữ' của Notepad. Tuy nhiên, chỉnh sửa các điều khiển có bật tự động hoàn thành, chấp nhận phím nóng Ctrl + Backspace. –

+3

Giống như Raymond ['said'] (http://blogs.msdn.com/b/oldnewthing/archive/2007/10/11/5395501.aspx). – TLama

+0

Thú vị, tôi không biết điều đó. Nhưng nó vẫn còn một chút khó chịu bởi vì các phím tắt hoạt động ở rất nhiều nơi bao gồm cả phần mềm MS. – oxo

Trả lời

17

Đây không phải là sự cố cụ thể về Delphi. Thật vậy, TEdit và các điều khiển khác chỉ đơn thuần là trình bao bọc cho các điều khiển Microsoft Windows gốc và chúng hoạt động như thế này. Hãy thử, ví dụ, hộp chỉnh sửa trong hộp thoại 'Chọn phông chữ' của Notepad. Tuy nhiên, chỉnh sửa các điều khiển có bật tự động hoàn thành, chấp nhận phím nóng Ctrl + Backspace. Tôi nghĩ bạn có thể bật tính năng này dễ dàng bằng cách

SHAutoComplete(Edit1.Handle, 
    SHACF_AUTOAPPEND_FORCE_OFF or SHACF_AUTOSUGGEST_FORCE_OFF) 

(sử dụng ShLwApi).

+0

+1, tôi đã viết bình luận bạn thay đổi cờ từ 'SHACF_DEFAULT = 0', bạn đã nhanh hơn. Đây là cách dễ nhất để thực hiện tính năng này. – TLama

+0

@TLama: Vâng, tự động hoàn thành thực tế có lẽ không phải là những gì OP muốn ... Tuy nhiên, tôi tự hỏi nếu không có cách nào tốt hơn để làm điều này. Sau khi tất cả, nó làm cho ít ý nghĩa để kích hoạt 'vô hiệu hóa tự động hoàn thành' để có được phím nóng Ctrl + Backspace để làm việc ... –

+0

Có lẽ cũng nên thêm cờ 'SHACF_FILESYS_ONLY', không phải vì nó có ý nghĩa, nhưng vì tài liệu một cách rõ ràng nói "Cờ này phải được sử dụng kết hợp với một hoặc nhiều cờ SHACF_FILESYS * hoặc SHACF_URL *." đề cập đến những lá cờ tôi sử dụng ở trên. –

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