关于资源文件

Firing_Sky 2000-08-17 10:51:00
加精
我写了一个过程来装入资源文件
Sub LoadResStrings(frm As Form)
On Error Resume Next

Dim ctl As Control
Dim obj As Object
Dim fnt As Object
Dim sCtlType As String
Dim nVal As Integer

frm.Caption = LoadResString(CInt(frm.Tag))
Set fnt = frm.Font
fnt.Name = LoadResString(20)
fnt.Size = CInt(LoadResString(21))

'设置控件的标题,对菜单项使用 caption 属性并对所有其他控件使用 Tag 属性
For Each ctl In frm.Controls
Set ctl.Font = fnt
sCtlType = TypeName(ctl)
If sCtlType = "Label" Then
ctl.Caption = LoadResString(CInt(ctl.Tag))
ctl.ToolTipText = LoadResString(CInt(ctl.ToolTipText))
ElseIf sCtlType = "Menu" Then
ctl.Caption = LoadResString(CInt(ctl.Caption))
ElseIf sCtlType = "TabStrip" Then
For Each obj In ctl.Tabs
obj.Caption = LoadResString(CInt(obj.Tag))
obj.ToolTipText = LoadResString(CInt(obj.ToolTipText))
Next
ElseIf sCtlType = "Toolbar" Then
For Each obj In ctl.Buttons
obj.ToolTipText = LoadResString(CInt(obj.ToolTipText))
obj.Caption = LoadResString(CInt(obj.Caption))
Next
ElseIf sCtlType = "ListView" Then
For Each obj In ctl.ColumnHeaders
obj.Text = LoadResString(CInt(obj.Tag))
Next
Else
nVal = 0
nVal = Val(ctl.Tag)
If nVal > 0 Then ctl.Caption = LoadResString(nVal)
nVal = 0
nVal = Val(ctl.ToolTipText)
If nVal > 0 Then ctl.ToolTipText = LoadResString(nVal)
End If
Next
End Sub

在我的窗体Load事件中载入资源文件,再改变其中一个Label的FontSize,结果发现窗体上的所有Label的大小都改变了,这是怎么回事?付:FormLoad代码如下:
Private Sub Form_Load()
LoadResStrings Me
ImgFlySocket.Picture = LoadResPicture(101, 0)
lblTitle.FontSize = 12
End Sub
效果是窗体上的所有Label的字体大小由9变为了12,请各位赐教!
...全文
209 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
prefix 2000-08-25
  • 打赏
  • 举报
回复
Firing_Sky:
这样不行。刚好我也遇到了。如果你这样做,ctl.font=fnt这句反而对一些控件不起作用了。你应该把set再加上,然后在以后想改变字体的地方不直接使用XXX.Font=YYY.Font,而使用 Set XXX.Font=YYY.Font,这样就都没有问题了。


Cheers!
Mike 2000-08-17
  • 打赏
  • 举报
回复
关注
shines77 2000-08-17
  • 打赏
  • 举报
回复
还有 Set ctl=Nothing .
Firing_Sky 2000-08-17
  • 打赏
  • 举报
回复
错误我已经找到了,将
Set ctl.Font = fnt
这一句改为
ctl.Font = fnt
就一切OK了,没想到,很多不同控件的Font属性都能指向同一个地址。 ^_^
在这里要感谢Tyro,他给了我很多提示和建议,很可惜他没有在这儿发表帖子,没法给他分^_^
这个问题给分了!
prefix 2000-08-17
  • 打赏
  • 举报
回复
在LoadResStrings的最后使用 Set fnt=Nothing 看看。
Un1 2000-08-17
  • 打赏
  • 举报
回复
单步跟终看看这句:
fnt.Size = CInt(LoadResString(21))
是不是12.

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧