Sử dụng autocompletion feature được tích hợp cho tất cả các điều khiển chỉnh sửa của Windows.
Trước tiên, hãy điền vào đối tượng TStrings
của bạn theo bất kỳ cách nào bạn muốn. Sau đó, sử dụng GetOleStrings
để tạo ra một TStringsAdapter
để quấn nó. (Bộ điều hợp không yêu cầu quyền sở hữu đối tượng TStrings
, vì vậy bạn phải đảm bảo rằng bạn không phá hủy nó trong khi bộ điều hợp vẫn còn hoạt động.) Bộ điều hợp cung cấp cho bạn giao diện IStrings
, mà bạn cần vì tính năng tự động hoàn thành yêu cầu Giao diện IEnumString
để cung cấp các kết quả khớp hoàn thành. Hãy gọi _NewEnum
cho điều đó.
Tiếp theo, gọi CoCreateInstance
để tạo đối tượng IAutoComplete
. Gọi phương thức Init
của nó để liên kết nó với tay cầm cửa sổ của điều khiển chỉnh sửa của bạn. Nếu bạn đang sử dụng hộp tổ hợp, hãy gửi thông báo cbem_GetEditControl
để tìm cửa sổ chỉnh sửa cơ bản.
Bạn có thể dừng tại thời điểm đó và tính năng tự động hoàn thành sẽ hoạt động tự động. Bạn có thể tắt tự động hoàn thành nếu bạn muốn hoặc bạn có thể đặt bất kỳ số nào của autocompletion options.
Bạn nói bạn không muốn tự động hoàn thành, nhưng trong thuật ngữ hệ điều hành, tôi nghĩ những gì bạn thực sự không muốn được gọi là tự động thêm, trong đó phần còn lại của chuỗi được nhập vào hộp chỉnh sửa tự động loại người dùng, nhưng được chọn để gõ thêm sẽ ghi đè lên nó và người dùng cần xóa văn bản thừa nếu giá trị mong muốn ngắn hơn một trong các kết quả phù hợp.
Ngoài ra còn có tự động đề xuất, hiển thị danh sách các đề xuất thả xuống.
Bạn có thể bật một hoặc cả hai tùy chọn. Bạn không cần tự lọc danh sách các đề xuất; đối tượng tự động hoàn thành tự lọc danh sách IEnumString
.
Nguồn
2010-01-12 04:04:48
Đây là không có gì ngắn hoàn hảo, chính xác những gì tôi muốn, tôi đã không nhận thức được các tùy chọn tự động hoàn thành, cảm ơn. –
IAutoComplete dường như không hỗ trợ khớp với bất kỳ chuỗi phần nào, nhưng chỉ hỗ trợ khớp từ đầu. Tôi có nghĩa là, cho hai dây, 'bcd' và 'abcd', nếu tôi gõ 'bc', chỉ 'bcd' sẽ được xuất hiện, nhưng tôi cũng muốn 'abcd' được so khớp. –
Sau đó, "tự động điền" không phải là tính năng bạn muốn ở vị trí đầu tiên, @Edwin. Nó * hoàn thành * những gì bạn đã gõ. –