加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

将图像放在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读