xe3 dll动态库中皮肤设置TStyleManager.SetStyle问题

liangyong007a 2013-05-26 06:30:21
在delphi xe3中,
我设计了一个主程序,子程序都是一个一个dll,想法是这样的,想在主程序中改变皮肤样式时,被打开的dll子程序的皮肤也发生改变,可是测试了一下, dll动态库中不能像设置exe程序那样TStyleManager.SetStyle,右键选择Options选项中没有像exe程序那样的Application下的apperance选项,exe中把皮肤选择好,就可以用TStyleManager.SetStyle设置选择的皮肤,
请问,在dll中怎么设置呢
...全文
342 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pan19840621 2013-05-30
谢谢分享.....
  • 打赏
  • 举报
回复
liangyong007a 2013-05-29
这个有点麻烦,还得一个一个控件自己设置,没有切中提问的内容。与提问内容要求不符,多谢了,辛苦分是有滴
  • 打赏
  • 举报
回复
jiangzs188136923 2013-05-27
100分我得了: 1、Dll是独立进程,DLL内封装的 窗体如果 要随 主程序 同时改变 皮肤: 使用 消息, 主程序向 DLL 发送消息。 方式: 比如:DLL封装了很多窗体,一般 DLL窗体都可以在 主程序的PageControl容器内显示。 你可以向 pageControl内的 DLL窗体发送消息。这样 主程序一修改,每一个 pg控制 的窗体 皮肤样式都会同时发生变化。 比点代码提示 : 主程序发送消息 for i := 0 to cxPG.PageCount -1 do if cxPG.Pages[i] is TMyTabSheet then SendMessage(TMyTabSheet(cxPG.Pages[i]).FFormHwd, WM_USER+101,0,0); ShowMessage('个人喜好设置成功,部份设置需重新登陆!'); DLL接受消息: procedure ChangeStyle(var msg: TMessage); message WM_USER+101; -------------------------------------------------------------------------- procedure TModelfrm.ChangeStyle(var msg: TMessage); begin inherited; dynamicChangeStyle; //修改皮肤。 end; procedure TModelfrm.dynamicChangeStyle; begin dxBarManager1.Style := PubShareInfoObj.dxBarStyle; if dxBarManager1.Style in [bmsFlat,bmsXP] then // (bmsStandard, bmsEnhanced, bmsFlat, bmsXP, bmsOffice11, // bmsUseLookAndFeel) begin dxBarManager1.Backgrounds.Bar.LoadFromFile(PubShareInfoObj.dxBarBgFileName); mainPopMenu.BackgroundBitmap.LoadFromFile(PubShareInfoObj.dxBarBgFileName); end else begin dxBarManager1.Backgrounds.Bar := nil; mainPopMenu.BackgroundBitmap := nil; end; end; 当然,这种 EXE+DLL的工作方式,有很多具体的技术细节。 如果 你还有其它问题:可以QQ:188136923详谈。 如果你没有已经实现的框架,我们可以为初 中级程序 少量有偿提供 成熟框架服务。 毕竟 这是我多年的工作积累与心血。 100分我能获得了么?
  • 打赏
  • 举报
回复
随行的太阳 2013-05-27
  • 打赏
  • 举报
回复
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2013-05-26 06:30
社区公告
暂无公告