delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
VCLSkin皮肤在MDI窗体下的问题 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061221110031227.html
我在程序里面使用了VCLSkin皮肤控件版本2.74  
  控件放在数据模块窗体里面属性设置为SkinFormType属性设置为sfMainform  
  然后MDI主窗体的Create事件这样写  
  procedure   TfrmMain.FormCreate(Sender:   TObject);  
  begin  
      DoubleBuffered:=True;  
   
      Left:=0;   Top:=0;  
   
      WindowState:=wsMaximized;  
   
      ImgContext.Picture.LoadFromFile(GetContextImgPath);   //装载背景图片    
   
      FClientInstance   :=   MakeObjectInstance(ClientWndProc);  
   
      FPrevClientProc   :=   Pointer(GetWindowLong(ClientHandle,GWL_WNDPROC));  
   
      SetWindowLong(ClientHandle,GWL_WNDPROC,   LongInt(FClientInstance));  
  end;  
   
  但是程序运行的时候主窗体不会最大化  
  为什么啊?  
  有用过这个控件的同道们看看

好象是BUG

那有解决的办法没的啊?  
  第一次用这玩意

解决起来难度不小,MDI模式是微软放弃的技术,就是因为里面有硬伤。  
  这类控件应用在MDI同样也存在硬伤,最终也没有全部解决。

难道要放弃MDI模式?>

我不用皮肤控件就是正常的啊  
  一加上这个皮肤控件就不行了

如果客户端是运行在XP以上的系统,可以不用这个皮肤控件了。

关键不都是在XP系统下的撒  
  而且按钮样式呢?

vclskin提供了几个解决办法,诸如运行时动态调整form的caption  
  最大化问题我也遇到过,是显示fastreport报表的时候,fr的窗体已经最大化了,但是显示起来还是正常状态,还要手动点一次,好像是把对话框拉到跟屏幕一样大小,下次再启动就正常了,你可以试试,怀疑vclskin将状态写到注册表了

不行啊!  
  我只要一加上皮肤文件就不行了  
  只放控件不加皮肤文件没的问题

你可以试下发送两次最小化窗体最大化消息

换一个皮肤控件板本。

..............

不会最大化是什么样的效果,是不是顶端会留有几毫米的缝,看起来像整个窗体往下移动了几毫米?

posted on 2009-01-04 16:52 delphi2007 阅读(737) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。