Delphi 设置时间间隔';父母

Delphi 设置时间间隔';父母,delphi,delphi-xe2,Delphi,Delphi Xe2,我有一节课 THexMap = Class(TScrollingWinControl) private FCanvas :timage; // the canvas to draw on. 在构造过程中,我像这样创建了TImage Constructor THexMap.Create(AOwner: Tcomponent); begin inherited Create(AOwner); FCanvas := timage.Crea

我有一节课

THexMap = Class(TScrollingWinControl)
  private
      FCanvas    :timage;    // the canvas to draw on.
在构造过程中,我像这样创建了TImage

Constructor THexMap.Create(AOwner: Tcomponent);
    begin
      inherited Create(AOwner);

      FCanvas := timage.Create(self);
      FCanvas.Visible := true;

      { Set intial property values for component }

      MakeSolidMap;

    end;
如果我试着这样设置父对象

FCanvas.parent := THexMap;
我得到了不兼容的类型:TWinControl和xmap类

如何使此图像显示在THexMap中

一些可能有帮助的更多信息。。。 如果我这样设置“创建”
FCanvas:=TImage.Create(AOOwner)
论坛上有
TImage
,但没有图像显示。如果单击对象检查器中的组件,然后单击属性图片,则图片编辑器中将显示正确的图像

重画

procedure THexMap.WndProc(var Message: TMessage);
const
  DISCARD_CURRENT_ORIGIN = nil;
var
  R : TRect;
  PS : PAINTSTRUCT;
begin
  if Message.Msg = WM_PAINT then
  begin
    if GetUpdateRect( Handle, nil, false ) then
    begin
      BeginPaint( Handle, PS );
      try
        R := PS.rcPaint;
        bitblt(fCanvas.Canvas.Handle, R.Left, R.Top, R.Width, R.Height, TempMap.Canvas.Handle, R.Left+FOffset.X, R.Top+FOffset.Y, SRCCOPY);
      finally
        EndPaint( Handle, PS );
      end;
    end
    else
      inherited;
  end
  else
    inherited;



end;

父对象是TWinConrol的实例,而不是类类型
(例如,这个男孩的父母是约翰·多伊,不是人类)
所以你必须写:

FCanvas := timage.Create(self);
FCanvas.Parent := Self;

Visible=true在这里不需要

太好了,我不敢相信我没有试过这个。。。它确实解决了我的家长问题,尽管图像仍然没有显示出来。。。除非我正在拖动组件,否则图像将显示,直到我停止拖动组件,但听起来像是另一个问题。。。。。但至少TIMage现在在组件内。@GlenMorse设置控件父项不应是try/error,而应阅读如何/如何设置的文档。顺便问一下,您是在什么时候设置该图像控件的大小的?WinControl在“重新绘制”(TWinControl.PaintHandler)下自动启动子控件重新绘制。“拖动”后是否重新绘制TSCROLINGWINCONTROL?您可以尝试确保。@SirRufo我在
FCanvas.parent:=self之后设置了FCanvas宽度/高度
makeSolidMap
中,它确实执行
无效竖立(Self.Handle,r,False)在最后刷新,也为了重画,我还使用了一个
THexMap.WndPRoc()
我补充说这对于TImage来说是一个奇怪的问题。Tcombobox和其他Windows控件都可以使用,在CreateWnd中指定父控件会有帮助。