将图像放在Delphi / Win32中的组合框(右边缘)中
发布时间:2020-12-15 09:50:55 所属栏目:大数据 来源:网络整理
导读:我想在Delphi / Win32中的组合框(右边缘)内绘制一个图像. 组合框的样式为csDropDown.这不适用于csOwnerDrawFixed或csOwnerDrawVariable. 组合框应该是可编辑的,类似于浏览器的地址栏. 有没有创建额外的Delphi组件的Win32解决方案? 我尝试了以下,但它不起作
我想在Delphi / Win32中的组合框(右边缘)内绘制一个图像.
组合框的样式为csDropDown.这不适用于csOwnerDrawFixed或csOwnerDrawVariable. 组合框应该是可编辑的,类似于浏览器的地址栏. 有没有创建额外的Delphi组件的Win32解决方案? 我尝试了以下,但它不起作用.我能用Delphi 7做到吗? 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,100,100); //Test OutputDebugString(PCHar(Format('aa %d %d %d',[Message.WParam,Message.LParam,ChDirComboBox.Handle]))); end; end; FChDirComboWndProc(Message); // process message end; 解决方法
这样做的方法是实现一个Owner-Drawn组合框.请参阅MSDN上的
Owner-Drawn Combo Boxes,或查找Delphi示例,例如:
Owner Draw – ComboBox.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |