我的程序加上VclSkin之后,关闭程序报地址错误。

解决方案 »

  1.   

    什么版本,有的版本有bug,我曾遇到过,打开opendialog,关闭就挂掉了
      

  2.   

    我用了两个不同的版本,都是这样的情况。VclSkin 5.03 和VclSkin d7
      

  3.   

    试试不同的皮肤文件,如果都会出错,估计是VCLSKIN跟别的控件有兼容性问题,只能换别的用了。我从网上下载过VCLSKIN的皮肤包,有100个左右的皮肤文件,可是感觉都巨难看,而且感觉上还有一点点影响速度,所以这个控件基本被我放弃了
      

  4.   

    程序里放两个VCLSKIN也会报内错
      

  5.   

    支持使用皮肤,设计程序也应该与时俱进啊,谁愿意与灰头土脸的窗体按钮打交道啊?
    楼主遇到的问题,可能是个别有问题的皮肤文件导致的,不过vclskin在win2003中确实有问题。
      

  6.   

    应该是vcl版本的问题吧,不要用高版本的,换一个低版本的试试看。
      

  7.   

    我现在用了个控件SkinData1,有一段时间不报错的,过了一段时间又开始报错,不知道什么?请大家多多指教。
      

  8.   

    解决方法:将WinSkinForm.pas单元中,如下代码的第26行注释掉就OK了。
    procedure TWinSkinForm.GetIcon(var bmp:Tbitmap);
    var
      SmallIcon: HIcon;
      cx, cy,i: Integer;
      sd:Tskindata;
    begin
          cx := GetSystemMetrics(SM_CXSMICON);
          cy := GetSystemMetrics(SM_CYSMICON);
    //      bmp.Assign(nil);
    //      bmp.canvas.brush.color:=clFuchsia;
          bmp.width:=cx;bmp.height:=cy;
          bmp.PixelFormat := pf16bit; 
          bmp.Canvas.Brush.color:=clFuchsia;
          bmp.canvas.fillrect(rect(0,0,cx,cy));
          iconx:=cx;
          // First try a small icon, then a big icon
          DefIcon := SendMessage(hwnd, WM_GETICON, ICON_SMALL, 0);
          if DefIcon = 0 then
            DefIcon := SendMessage(hwnd, WM_GETICON, ICON_BIG, 0);      if DefIcon <> 0 then begin
            SmallIcon := CopyImage(DefIcon, IMAGE_ICON, cx, cy, LR_COPYFROMRESOURCE);
            DrawIconEx(bmp.Canvas.Handle, 0, 0, SmallIcon,
                cx, cy, 0, 0, DI_MASK or DI_IMAGE );//DI_NORMAL);
            DestroyIcon(SmallIcon);
          //end else if not fsd.sysicon.empty then  begin //otherwise no icon found
             //cause DLL exception
             //bmp.assign(fsd.sysicon) ;
             //bmp.PixelFormat := pf24bit;
             //copybmp(sd.SysIcon,bmp);
          end else begin
             for i:= 0 to skinmanager.dlist.count-1 do begin
                 sd:= Tskindata(skinmanager.dlist.items[i]);
                 if sd.skinformtype=sfMainform then begin
                    if not sd.sysicon.empty then
                       //copybmp(sd.SysIcon,bmp);
                       //bmp.assign(sd.sysicon) ;
                 end;
             end;
          end;
    end;
      

  9.   

    你在FormClose的时候将SkinData.Active:=False;
      

  10.   

    请问十三楼,WinSkinForm.pas在那个地方,我怎么找都找不到