2012-03-21 12 views
7

Tôi đang sử dụng một thành phần TComboBox với các thiết lập sở hữu phong cách để csOwnerDrawFixed, tôi thực hiện OnDrawItem Và tất cả mọi thứ hoạt động tốt, Bây giờ tôi muốn mà combobox để hành xử như thế nào khi có csDropDown phong cách (với csOwnerDrawFixed phong cách hoạt động như phong cách csDropDownList), tôi có nghĩa là với một trình soạn thảo nội tại. điều này có thể không?Làm thế nào một Combobox với Style csOwnerDrawFixed có thể hoạt động giống như phong cách csDropDown?

Trả lời

0

Không ai trong số các phong cách OwnerDraw hỗ trợ sự hiện diện của một hộp chỉnh sửa trong TComboBox. Bạn sẽ phải sử dụng một riêng biệt TEdit để thay thế.

7

TComboBox wrapper Delphi không hỗ trợ chủ sở hữu vẽ theo phong cách thể chỉnh sửa, nhưng cơ bản điều khiển Windows không, và thật dễ dàng để kích hoạt nó.

Tạo một lớp hậu duệ mới như vậy:

TComboBox = class(StdCtrls.TComboBox) 
public 
    procedure CreateParams(var Params: TCreateParams); override; 
end; 

procedure TComboBox.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 
    if Assigned(OnDrawItem) then 
    Params.Style := Params.Style or CBS_OWNERDRAWFIXED 
end; 

Đặt Style-csDropDown và gán OnDrawItem như bạn đã làm.