Foxtable(狐表)用户栏目专家坐堂 → 为什么狐表的菜单可以翻译成功我自已做的翻译不成功呢?


  共有20614人关注过本帖树形打印复制链接

主题:为什么狐表的菜单可以翻译成功我自已做的翻译不成功呢?

帅哥哟,离线,有人找我吗?
dm168
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:111 积分:1083 威望:0 精华:0 注册:2012/9/14 17:23:00
  发帖心情 Post By:2012/11/10 16:11:00 [只看该作者]

这个要怎么做我不会啊!!!能给个例子吗?
你msgbox()看一下循环是否进去,还有就是一些变量的值,是否是你预期的值。

 回到顶部
帅哥哟,离线,有人找我吗?
dm168
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:111 积分:1083 威望:0 精华:0 注册:2012/9/14 17:23:00
  发帖心情 Post By:2012/11/10 16:22:00 [只看该作者]

我这样在命令窗口测试,什么也没显示,这是什么问题呢?

Dim dr As DataRow
For Each c As Winform.Control In Forms(Vars("Fname")).Controls
If Typeof c Is WinForm.NavBar Then
Dim bar As WinForm.NavBar = Forms(Vars("Fname")).Controls(c.name)
For Each pg As WinForm.NavPage In bar.NavPages
output.show(pg.ButtonText)
Next
End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/10 16:33:00 [只看该作者]

 那么,明显是没有进到循环里面。你一步一步调试一下,就知道原因了。

 msgbox(Vars("Fname"))
[此贴子已经被作者于2012-11-10 16:34:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
dm168
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:111 积分:1083 威望:0 精华:0 注册:2012/9/14 17:23:00
  发帖心情 Post By:2012/11/12 14:56:00 [只看该作者]

有两个问题,1.导航栏和页面集在其它窗口无法被翻译。只是启动窗口能成功

2.其它控件不知要怎么加入到For Each c As Winform.Control In Forms(Vars("当前窗口名称")).Controls中下面这样总是出错,求助将其它控件加入到For Each c As Winform.Control In Forms(Vars("当前窗口名称")).Controls中的语法
Dim dr As DataRow
For Each c As Winform.Control In Forms(Vars("当前窗口名称")).Controls

Dim ct As String = Forms(Vars("当前窗口名称")).Controls(c.name).text
dr = DataTables("表B").find("[En] = '" & ct & "'")
If dr IsNot Nothing
Forms(Vars("当前窗口名称")).Controls(c.name).text = dr(getConfigValue("LangC", "Cn"))
End If
dr = DataTables("表B").find("[cn] = '" & ct & "'")
If dr IsNot Nothing
Forms(Vars("当前窗口名称")).Controls(c.name).text = dr(getConfigValue("LangC", "En"))
End If



If Typeof c Is WinForm.TreeView Then
Dim trv As WinForm.TreeView = Forms(Vars("当前窗口名称")).Controls(c.name)
For Each nd As WinForm.TreeNode In trv.AllNodes
dr = DataTables("表B").find("[en] = '" & nd.text & "'")
If dr IsNot Nothing
nd.text = dr(getConfigValue("语言类别", "cn"))
End If
Next
End If
If Typeof c Is WinForm.NavBar Then
Dim bar As WinForm.NavBar = Forms(Vars("当前窗口名称")).Controls(c.name)
For Each nb As WinForm.NavPage In bar.NavPages
dr = DataTables("表B").find("[en] = '" & nb.ButtonText & "'")
If dr IsNot Nothing
nb.Buttontext = dr(getConfigValue("语言类别", "cn"))
End If
dr = DataTables("表B").find("[cn] = '" & nb.ButtonText & "'")
If dr IsNot Nothing
nb.Buttontext = dr(getConfigValue("语言类别", "en"))
End If
Next
End If
If Typeof c Is WinForm.TabControl Then
Dim tc As WinForm.TabControl = Forms(Vars("当前窗口名称")).Controls(c.name)
For Each pg As WinForm.TabPage In tc.TabPages
dr = DataTables("表B").find("[en] = '" & pg.Text & "'")
If dr IsNot Nothing
pg.text = dr(getConfigValue("语言类别", "cn"))
End If
dr = DataTables("表B").find("[cn] = '" & pg.Text & "'")
If dr IsNot Nothing
pg.text = dr(getConfigValue("语言类别", "en"))
End If
Next
End If
Next

[此贴子已经被作者于2012-11-12 14:57:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/12 15:11:00 [只看该作者]

 不同的控件,属性可能不一致,分开处理。

For Each c As Winform.Control In Forms(Vars("当前窗口名称")).Controls

    If TypeOf c Is Winform.NavBar Then

    Else If TypeOf c Is WinForm.TreeView Then

    Else If TypeOf c Is WinForm.TabControl Then

    Else If TypeOf c Is WinForm.Panel Then

    Else

    End If
Next

[此贴子已经被作者于2012-11-12 16:00:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
dm168
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:111 积分:1083 威望:0 精华:0 注册:2012/9/14 17:23:00
  发帖心情 Post By:2012/11/13 10:06:00 [只看该作者]

这个问题解决了了大功告成了 For Each f As object In forms 这里出错,要怎么修改?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table


Dim dr As DataRow
For Each f As object In forms
output.show(1)
For Each c As Winform.Control In f.Controls
If TypeOf c Is Winform.NavBar Then
Dim bar As WinForm.NavBar = f.Controls(c.name)
For Each nb As WinForm.NavPage In bar.NavPages
dr = DataTables("Language").find("[English] = '" & nb.ButtonText & "'")
If dr IsNot Nothing
nb.Buttontext = dr(getConfigValue("LangC", "Chinese"))
End If
dr = DataTables("Language").find("[Chinese] = '" & nb.ButtonText & "'")
If dr IsNot Nothing
nb.Buttontext = dr(getConfigValue("LangC", "English"))
End If
Next
Else If Typeof c Is WinForm.TreeView Then
Dim trv As WinForm.TreeView = f.Controls(c.name)
For Each nd As WinForm.TreeNode In trv.AllNodes
dr = DataTables("Language").find("[English] = '" & nd.text & "'")
If dr IsNot Nothing
nd.text = dr(getConfigValue("LangC", "Chinese"))
End If
dr = DataTables("Language").find("[Chinese] = '" & nd.text & "'")
If dr IsNot Nothing
nd.text = dr(getConfigValue("LangC", "English"))
End If
Next
Else If TypeOf c Is WinForm.TabControl Then
Dim tc As WinForm.TabControl = f.Controls(c.name)
For Each pg As WinForm.TabPage In tc.TabPages
dr = DataTables("Language").find("[English] = '" & pg.Text & "'")
If dr IsNot Nothing
pg.text = dr(getConfigValue("LangC", "Chinese"))
End If
dr = DataTables("Language").find("[Chinese] = '" & pg.Text & "'")
If dr IsNot Nothing
pg.text = dr(getConfigValue("LangC", "English"))
End If
Next

Else
Dim ct As String = f.Controls(c.name).text
dr = DataTables("Language").find("[English] = '" & ct & "'")
If dr IsNot Nothing
f.Controls(c.name).text = dr(getConfigValue("LangC", "Chinese"))
End If
dr = DataTables("Language").find("[Chinese] = '" & ct & "'")
If dr IsNot Nothing
f.Controls(c.name).text = dr(getConfigValue("LangC", "English"))
End If
End If
Next
Next

[此贴子已经被作者于2012-11-13 10:15:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/13 10:35:00 [只看该作者]

 需要把窗口打开,才可能对窗口的的控件属性进行修改。

 再有就是,没有必要对每一个窗口打开的时候都执行一遍这个函数。

 写成两个函数,一个是控制全部窗口,一个控制当前窗口的。

Dim dr As DataRow
For Each f As WinForm.Form In forms
    Dim IsOpened As Boolean = True
    If f.Opened = False Then
        IsOpened = False
        f.Open()
        f.Visible = False
    End If

    For Each c As Winform.Control In f.Controls
        If TypeOf c Is Winform.NavBar Then
            Dim bar As WinForm.NavBar = f.Controls(c.name)
            For Each nb As WinForm.NavPage In bar.NavPages
                dr = DataTables("表B").find("[en] = '" & nb.ButtonText & "'")
                If dr IsNot Nothing
                    nb.Buttontext = dr(getConfigValue("语言类别", "cn"))
                End If
                dr = DataTables("表B").find("[cn] = '" & nb.ButtonText & "'")
                If dr IsNot Nothing
                    nb.Buttontext = dr(getConfigValue("语言类别", "en"))
                End If
            Next
        Else If Typeof c Is WinForm.TreeView Then
            Dim trv As WinForm.TreeView = f.Controls(c.name)
            For Each nd As WinForm.TreeNode In trv.AllNodes
                dr = DataTables("表B").find("[en] = '" & nd.text & "'")
                If dr IsNot Nothing
                    nd.text = dr(getConfigValue("语言类别", "cn"))
                End If
                dr = DataTables("表B").find("[cn] = '" & nd.text & "'")
                If dr IsNot Nothing
                    nd.text = dr(getConfigValue("语言类别", "en"))
                End If
            Next
        Else If TypeOf c Is WinForm.TabControl Then
            Dim tc As WinForm.TabControl = f.Controls(c.name)
            For Each pg As WinForm.TabPage In tc.TabPages
                dr = DataTables("表B").find("[en] = '" & pg.Text & "'")
                If dr IsNot Nothing
                    pg.text = dr(getConfigValue("语言类别", "cn"))
                End If
                dr = DataTables("表B").find("[cn] = '" & pg.Text & "'")
                If dr IsNot Nothing
                    pg.text = dr(getConfigValue("语言类别", "en"))
                End If
            Next
        Else If TypeOf c Is WinForm.Panel Then
        Else
           
            Dim ct As String = f.Controls(c.name).text
            dr = DataTables("表B").find("[en] = '" & ct & "'")
            If dr IsNot Nothing
                f.Controls(c.name).text = dr(getConfigValue("语言类别", "cn"))
            End If
            dr = DataTables("表B").find("[cn] = '" & ct & "'")
            If dr IsNot Nothing
                f.Controls(c.name).text = dr(getConfigValue("语言类别", "en"))
            End If
           
        End If
    Next
   
    If IsOpened = False Then f.Close()
Next

 回到顶部
帅哥哟,离线,有人找我吗?
dm168
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:111 积分:1083 威望:0 精华:0 注册:2012/9/14 17:23:00
  发帖心情 Post By:2012/11/13 22:24:00 [只看该作者]

感谢,大功告成,上面的代码还有两个地方搞不明白

还有就是翻译的时候屏幕会不停的闪动,这个有办法解决吗?

Else If TypeOf c Is WinForm.Panel Then  '为什么最后要用一个面板的 if 语句
Else

Dim ct As String = f.Controls(c.name).text
dr = DataTables("表B").find("[en] = '" & ct & "'")
If dr IsNot Nothing
f.Controls(c.name).text = dr(getConfigValue("语言类别", "cn"))
End If
dr = DataTables("表B").find("[cn] = '" & ct & "'")
If dr IsNot Nothing
f.Controls(c.name).text = dr(getConfigValue("语言类别", "en"))
End If

End If
Next

If IsOpened = False Then f.Close() 这个地为没有 end if 是不是漏写了,不写也能成功但还是加入了 end if
Next

[此贴子已经被作者于2012-11-14 0:01:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/14 10:15:00 [只看该作者]

 闪动的问题,对于独立的窗口,可用 Forms().Open(-1000, -1000)。我找不到好的解决方法

 第一个问题呢,以为你窗口中有panel控件,而panel控件没有Text属性。

 第二个问题,对于一句代码,可以这样简写。

 

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/14 10:16:00 [只看该作者]

闪动问题,看看这个能不能解决:

 

 

e.Form.StopRedraw()
'动态增加或删除控件的代码

e.Form.ResumeRedraw()

 

 


 回到顶部
总数 83 上一页 1 2 3 4 5 6 7 8 9 下一页