自己写的一个Dll 
把窗体F传到Dll 中
然后给窗体F中的一个控件Btn(TsuiImageButton类型) 的PicNormal (Tpicture 类) 赋值
F.Btn.PicNormal:=TPicture(GetPicBmp(ENormal));  //GetPicBmp(ENormal) 返回一个Bmp图片
如果不封装到Dll 
直接在窗体中这种方法没问题
封装到Dll 后 就报 cannot assign a TBitmap to a TPicture 错
我换了其他方式
新建一个 Tpicture 然后再赋给 PicNormal 也会报类似错误
那位高人见过这的问题啊~~ 
在线等~ 

解决方案 »

  1.   

    參考這個 :http://topic.csdn.net/u/20091216/14/0906d982-c004-417a-becb-07efdbea81ae.html
      

  2.   

    TsuiImageButton  他的pictrue属性 TPICTURE 不一定就是delphi中的tpicture 你仔细查看下 看有什么转换方式没
      

  3.   

    在不封装成Dll的情况下
     用
        SuiImageBtn.PicNormal:=TPicture(Bmp);
        SuiImageBtn.PicMouseOn:=TPicture(Bmp);
    可以赋值成功  Bmp 为一Bmp格式图片
    能正常显示
    说明类型是一样的   我查看结果也是一样的
    在Dll中就报错
      

  4.   

    property PicNormal : TPicture read m_PicNormal write SetPicNormalF;TPicture = class(TInterfacedPersistent, IStreamPersist)
    是一样的 
      

  5.   

    有些插件的tpicture 是来自别的单元的,或者本身就封装了这些单元
      

  6.   

    比较一下 两个tpicture 所在的单元 以及内容有没有区别
      

  7.   

    来自同一个单元   Graphics
      

  8.   

    没有跨平台   只是准备把原来的一个类封装成Dll 
    在类里面是没问题的   到了Dll就报错
    郁闷中
      

  9.   

    原因找了到就好解决了~~~ 
    我试了用D7 的原生控件Image 在dll 下 用
    TImage.Picture:=TPicture(Bmp); 报同样的错误
      

  10.   

    你沒明白我的意思....
    當你知道了原因,就會偏向采用上面的那個鏈接!
    你去搜索“DLL 對象共享”,就會知道原因所在了....
      

  11.   

    DLL传递delphi对象,罪过罪过(这个问题太多了)如果用dll,那么参数就使用C语言的标准类型,要传递delphi对象,还是用bpl吧