500分,求解activeskin相关问题
现有一函数
global type gf_setskinmenu from function_object
end type
forward prototypes
global subroutine gf_setskinmenu (window as_win, menu auo)
end prototypes
global subroutine gf_setskinmenu (window as_win, menu auo);uo_skin lole
ClassDefinition lcd
long i
For i = 1 To UpperBound(as_win.Control)
If as_win.Control[i].TypeOf() = OLECustomControl! Then
lcd = as_win.Control[i].ClassDefinition
If lcd.Name = "uo_skin" Then
lole = as_win.Control[i]
Exit
End If
End If
Next
if isvalid(lole) and isvalid(auo)then
lole.Object.ApplySkinByName(handle(auo), "Frame")
end if
end subroutine
为何执行到lole.Object.ApplySkinByName(handle(auo), "Frame")报错,
0x7800b834指令引用的内存0x00000000。该内存不能为"read"
另:各位的可视应用对象又是怎么应用皮肤的?
问题点数:100、回复次数:13Top
1 楼eastpond(东塘)回复于 2006-06-13 17:02:36 得分 0
只能帮你顶了
pb用skin不是很好,没有dw跟tab控件的skinTop
2 楼lzp_lrp(lzp)回复于 2006-06-13 17:15:05 得分 0
建议不要用换肤之类的东东,PB对其支持的不太好,经常出错
建议自己用PB本身的功能来做
如果你想解决你的这个问题,建议你用try试试Top
3 楼whchen(土龙)回复于 2006-06-14 08:23:36 得分 0
不用换肤。确实要用请买正版。Top
4 楼lovelihp(一年多的总结:光顶升不了星)回复于 2006-06-14 10:42:44 得分 0
没用过换肤之类的东西.Top
5 楼wangxichen() 喜之郎 : )回复于 2006-06-14 13:28:23 得分 0
控件注册了没有?Top
6 楼blueshu(学习Oracle9i)回复于 2006-06-14 17:11:36 得分 0
当然注册了,其它地方用都正常,现在就是解决动态控件的问题Top
7 楼liuzyl()回复于 2006-07-28 16:51:57 得分 0
我用activeskin也是出毛病 在客户端都不能用 郁闷Top
8 楼friendwaters(西门坡论坛 http://www.simpsoft.cn)回复于 2006-07-28 19:11:02 得分 0
没用过这东西Top
9 楼liuzyl()回复于 2006-07-28 21:00:11 得分 0
一般是 Activeskin 没有注册,如果是破解版的话 system文件夹下应该有2个文件 actskn43.ocx和actskn.oca 把这两个文件拷到目标机的d:盘 然后在dos下输入 d:\regsvc32.exe actskn43.ocx 这样目标机的空间才注册成功
Top
10 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:44:55 得分 0
这个问题我知道怎么回事,我刚就遇到了,试了好久才知道怎么回事。
原因是因为函数里面用了try,在有些机器上不能用try,具体解决办法是以代码方式打开该对象,你发现里面有两三个try,把它注释调就可以了,不影响整个函数作用。不信你试试,我就这样解决了。
如果有不祥请email,ilyvmly@163.comTop
11 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:51:24 得分 0
到客户机只要带着皮肤文件和activeskin.dll(当然你可以是其他名,就是换肤函数的库编译结果,pbd也可以),还有actskn43.ocx(这个是注册时用的),你试着用Dllregister函数,如果不成功(我这里就不能用它本身函数注册),我还有其他办法,就是直接调用win本身的注册程序,做法是,首先用filecopy把actskn43.ocx拷贝到system32目录下(取得这个目录你会吧),然后用run(run(ls_sysdir+"\regsvr32.exe /s actskn43.ocx")),其中sysdir是system32的路径变量,/s 表示静态注册,不提示注册成功对话框。Top
12 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:53:21 得分 0
注册完了,要换肤的窗口open中调用那个换肤的函数即可。我的整个换肤过程就这样。Top
13 楼myvicy(我来也!)回复于 2006-11-25 09:02:05 得分 0
用过这个东西,对tab和label还有菜单的支持不是很好。菜单要每次都点才弹出。
可以用API写自己的uo来实现换肤效果很好的。Top




