求助:哪里有能画线、文字输入等功能的Panel控件?
马上给分!

解决方案 »

  1.   

    晕!为什么指名要Panel控件?
      

  2.   

    这样就行了TXPanel = class(TPanel)
    publish
      property Canvas;
    end;用 Canvas 尽情的画吧 !
      

  3.   

    其实 TPanel 已经有 Canvas 属性,只是是 Protected ,不能直接访问
    你有两种方法可以使用它:
    1 用Delphi的控件向导生成一个控件,像上面一样把 Canvas 属性设为 publish,然后就可以代替 TPanel 使用了
    2 如果你仅有一个单元,需要此功能,也可以象下面一样
      在单元内定义   TXPanel = class(TPanel);
      然后像这样使用 TXPanel(Panel1).Canvas.Font.Name = 'xxx';
    建议使用方法1
    另外注意,你这样在上面画的东西,在窗口刷新时,会丢失,要做到不丢失,就复杂一点:TXPanel = class(TPanel);
    private
      FOnPaint: TNotifyEvent;
    protected
      procedure Paint; override;
    public
      property Canvas;
    publish
      property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
    end;procedure TXPanel.Paint;
    begin
      inherited;
      if Assigned(FOnPaint) then FOnPaint(Self);
    end;这样 TXPanel 就有了 OnPaint 事件,并可以使用 Canvas 属性了,怎样使用就不用说了吧
      

  4.   

    再问个问题:怎么调用DrawText函数;我调用时的返回值老是为0。怎样才能正确使用?请给出详细代码或需要注意的细节!谢谢!
      

  5.   

    var
      s: String;
      r: TRect;
    begin
      s := 'abcd';
      r := ClientRect;
      DrawText(Canvas.Handle,PChar(s),-1,r,DT_LEFT);
    end;