Tôi muốn vẽ một hình ảnh bên trong một combobox (cạnh phải) trong Delphi/Win32.Đặt một hình ảnh bên trong một combobox (cạnh phải) trong Delphi/Win32
Hộp tổ hợp có kiểu csDropDown. Điều này không hoạt động với csOwnerDrawFixed hoặc csOwnerDrawVariable.
Hộp kết hợp có thể chỉnh sửa tương tự với thanh địa chỉ của trình duyệt.
Có giải pháp Win32 nào mà không tạo thành phần Delphi bổ sung không?
Tôi đã thử cách sau, nhưng nó không hoạt động. Tôi có thể làm điều đó với Delphi 7 không?
TForm1 = class(TForm)
...
private
FChDirComboWndProc: TWndMethod;
procedure ChDirComboWndProc(var Message: TMessage);
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FChDirComboWndProc := ChDirComboBox.WindowProc; // save old window proc
ChDirComboBox.WindowProc := ChDirComboWndProc; // subclass
end;
procedure TForm1.ChDirComboWndProc(var Message: TMessage);
begin
WM_ERASEBKGND: begin // WM_PAINT ?
SetBkMode(Message.WParam, TRANSPARENT);
SetTextColor(Message.wParam, GetSysColor(COLOR_GRAYTEXT));
FillRect(Message.wParam, Rect(3,3,300,30), GetStockObject(BLACK_BRUSH));
Rectangle(Message.wParam, 15,15, 100, 100); //Test
OutputDebugString(PCHar(Format('aa %d %d %d',[Message.WParam, Message.LParam, ChDirComboBox.Handle])));
end;
end;
FChDirComboWndProc(Message); // process message
end;
Hộp tổ hợp có kiểu ** csDropDown **. Điều này không hoạt động với csOwnerDrawFixed hoặc csOwnerDrawVariable. Hộp kết hợp có thể chỉnh sửa tương tự với thanh địa chỉ của trình duyệt. Tôi sẽ thêm thông tin này vào câu hỏi của tôi, xin lỗi vì đã quên điều đó. – Codr