如何在菜单项中添加其它控件(50分)

  • 主题发起人 主题发起人 skybuilder
  • 开始时间 开始时间
S

skybuilder

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在菜单项中添加其它控件,如EDIT、COMBOX等。
 
Delphi自带的MainMenu控件不是WinControl,所以不能直接创建其他控件放到上面,只能通过自己绘制控件的方式来着:
procedure TForm1.bb1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
RadioButton1.PaintTo(ACanvas, ARect.Left, ARect.Top);
end;

procedure TForm1.bb1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Width := RadioButton1.Width;
end;
上面是示例代码。原理是使用控件的PaintTo,
不过你实际实现的时候,推荐使用DrawFrameControl

Good Luck!
 
晕!画出来也没有用.
 
等我试了以后再给分啊。
不晓得各位还有何高见。
既要显示其它控件,又要让此控件响应消息。
 
打个比方,它本身是一张平纸,怎么能装水呢??如果是一个水缸还差不多,第一位朋友说得对MainMenu控件不是WinControl,
唯一只能画出来,我只知道如果在form上画出来的话,本身也不能接受事件,但可以通过鼠标当前的位置,来响应事件,
例如:在(20,20)的地方画一个点,可以通过当鼠标位置是(20,20)时,响应事件。
 
不晓得各位用过nlite这个软件没有,它是用的.net框架,运行后缩小到托盘中后,在弱出的菜单中有一个选择优选级的combox,这个应该可以说明,我所讲的这个功能是完全可以达到的。
 
达到当然能达到。但不能用常规方法实现,只能手工模拟画和事件响应。
白纸是不能直接装水,但可以弄湿了让它像装过水的样子。
 
散分。
我暂时只能用.net达到这个效果。其它语言没有确实可行的方法。
 
后退
顶部