设置TImage的父级

时间:2014-05-19 04:26:21

标签: 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.Create(self);
      FCanvas.Visible := true;

      { Set intial property values for component }

      MakeSolidMap;

    end;

如果我尝试在这里设置父母

FCanvas.parent := THexMap;

我得到Incompatible types: TWinControl and Class of ThexMap

我如何制作这样的图像显示在THexMap中?

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

REDRAW ..

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;

1 个答案:

答案 0 :(得分:2)

父是 TWinConrol的实例,而不是类类型
(例如,这个男孩的父母是John Doe,而不是人类) 所以你必须写:

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

此处不需要Visible = true