你没指定panel的name
这样第二次创建就会冲突
把原版的错误写上

解决方案 »

  1.   

    你的意思我不太明白,我在申明部分已经把panel申明了呀:panel:Tpanel;
      

  2.   

    delphi报的什么冲突啊,具体点的错误信息 
      

  3.   

    你只声明了一个panel类
    而类的实例——控件本身是要有自己的名字的
    而名字应是唯一的
    那怕名字为空(不起名)也必须只有一个
      

  4.   

    panel.name := 'panel' ;
      

  5.   

    实际上我在申明时用了:panel:Tpanel;就相当于将Tpanel类实例化了,该实例的名称就是panel.
      

  6.   

    按我原来的程序,当鼠标一移近窗口,就会报错:Access violation at address 0041EB2D in module 'project1.exe', Read of 0000003C'.
      

  7.   

    你在MouseMove的时候Panel还没有Create,肯定会出错。当发生内存访问错误的时候,一般都是访问了未创建或已释放的对象。
    “实际上我在申明时用了:panel:Tpanel;就相当于将Tpanel类实例化了,该实例的名称就是panel。”——并不完全正确。其实你只是声明了一个类的指针,但并没有给这个指针赋值,必须用  panel:=Tpanel.Create (self); 才真正创建了类的实例。你可以单步执行一下,应该是在panel.Width :=p.x -a; 这一句出错,因为你访问了未创建的对象。
      
    你可以在MouseMove和MouseDown的时候用变量记录鼠标位置,然后在MouseUp的时候创建Panel对象。如果要在MouseMove中,你必须确保Panel已创建了:或者判断是否MouseDown的状态,或者判断Panel <> nil 。
      

  8.   

    同意楼上的
    问题一定是那里
    你没有按过mouse只是移动
    肯定会错