Foxtable(狐表)用户栏目专家坐堂 → [分享]零下一度的点滴心得和学习记录专贴,高手略过


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

主题:[分享]零下一度的点滴心得和学习记录专贴,高手略过

帅哥哟,离线,有人找我吗?
蓝才文百
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
[分享]零下一度的点滴心得和学习记录专贴,高手略过  发帖心情 Post By:2016/11/13 21:01:00 [只看该作者]

最近学习foxtable有些心得体会,想想干脆开个帖子把这些点滴记录一下,既是笔记,也可与大家分享共勉。
(不定期更新,欢迎也把你的心得回一个:))
[此贴子已经被作者于2016/11/16 10:48:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/13 21:08:00 [只看该作者]

1.关于系统界面风格VisualStyle
我在菜单加上了用户可切换系统界面风格的代码,界面是可以改变了,但是一些窗体的控件似乎不行啊,比如Navbar。
找了资料和论坛,可以这样:

'系统界面风格
VisualStyle = VisualStyleEnum.Office2007Blue

'窗体的界面风格在foxtable代码框里是无法Tab出来的,查了论坛,以下代码可以改变Navbar的风格。
'都隐藏起来啦,其实这些也是C1各个控件的属性吧
Forms("菜单窗口").Controls("NavBar1").basecontrol.visualstyle = VisualStyleEnum.Office2007Blue

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/13 21:10:00 [只看该作者]

2.通过代码控制显示记录窗口(RecordGrid)

If CurrentTable.RecordGridVisible Then
    CurrentTable.CloseRecordGrid()
Else
    CurrentTable.OpenRecordGrid()
End If
e.ToggleButton.Pressed = CurrentTable.RecordGridVisible

这个代码其实就是Foxtable系统菜单上的记录窗口按钮的代码

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/14 10:44:00 [只看该作者]

3.系统上的功能区、菜单、配置菜单、文件菜单等等,这些功能,代码如何写?哪里找这些代码?
这个可以新建一个项目(注意,一定要新建一个项目),然后在“菜单设计”,“模板”->“从模板生成”,导入foxtable的系统菜单文件:开发版名称是:System.foxrb,商业版是:system.Ribbon
导入后,你就可以进入菜单设计,找到各个菜单,可以看到代码。
刚才我说一定要新建一个项目,然后按需要把代码复制到你的项目中去,要不然,你要是贸贸然在你的项目中导入菜单模板,然后又不小心删掉一些不需要的菜单,那就惨啦,可能会有N多的错误弹出,你的项目有可能百忙一场(记得按CTRL重新打开项目)。
图片点击可在新窗口打开查看此主题相关图片如下:导入菜单模板.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:44 积分:573 威望:0 精华:0 注册:2014/1/10 15:32:00
  发帖心情 Post By:2016/11/14 16:30:00 [只看该作者]

朋友说的十分详细,对于新手有指导作用,赞一个

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


加好友 发短信
等级:婴狐 帖子:38 积分:488 威望:0 精华:0 注册:2016/10/19 16:34:00
还有吗?  发帖心情 Post By:2016/11/14 17:37:00 [只看该作者]

还有吗?

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/15 12:38:00 [只看该作者]

楼上两位好!我会持续更新的。

4.感觉foxtable代码编辑不够酷,可以参考论坛两位高人的帖子,用第三方代码编辑器:

blackzhu:Foxtable中调用Notepad++写代码的方法

shanshuizhujian:代码编辑器改造 用Sublime Text 辅助编辑
根据上述帖子,我用Sublime Text 3扩展了Foxtable代码编辑,具体实现方法:
1)当然要先下载Sublime Text 3,并安装。
2)添加内部函数:
'函数名:SublimeTextEdit,代码:
'调用SublimeText编辑器
If FileSys.DirectoryExists(ProjectPath & "Temp") Then
Else
FileSys.CreateDirectory(ProjectPath & "Temp")
End If
Dim CodeRichTextBox As Windows.Forms.RichTextBox
Dim frm = args(0)
If frm.name = "Class197" Then
CodeRichTextBox = frm.Controls("SplitContainer1").Panel1.Controls("MyCodeEditor21").Controls("SplitContainer1").Panel1.Controls("SplitContainer2").panel1.controls("Editor")
Else
CodeRichTextBox = frm.Controls("MyCodeEditor1").Controls("SplitContainer1").Panel1.Controls("SplitContainer2").panel1.controls("Editor")
End If

FileSys.WriteAllText(ProjectPath & "Temp\Code.Fox",CodeRichTextBox.Text,False)
CodeRichTextBox.SelectAll
Dim Proc As New Process
Proc.WaitForClose = True
Proc.File = "C:\Program Files\Sublime Text\sublime_text.exe"
Proc.Arguments = ProjectPath & "Temp\Code.Fox"
Proc.Start
Dim CodeStr As String = FileSys.ReadAllText(ProjectPath & "Temp\Code.Fox")
If CodeStr = CodeRichTextBox.Text Then Return Nothing
CodeRichTextBox.Text = CodeStr


3)在全局代码中的Default添加代码:
'启动Sublime Text
Public Sub SublimeTextEdit_Click(ByVal sender As Object, ByVal e As EventArgs)
Functions.Execute("SublimeTextEdit", sender.findform)
End Sub

4)在计划管理中新增一个计划,代码如下:
Dim frmCodeEditor As Windows.Forms.Form = Windows.Forms.Form.ActiveForm
If frmCodeEditor Is Nothing Then Return
'CurrentTable.Current("第一列") = frmCodeEditor.Name
If frmCodeEditor.Name <> "Class197" And frmCodeEditor.Name <> "Class260" Then Return
If frmCodeEditor.Controls("BtnSublimeTextEdit") IsNot Nothing Then Return
Dim tbtn
If frmCodeEditor.name = "Class197" Then
tbtn = frmCodeEditor.controls("Button5")
Else
tbtn = frmCodeEditor.controls("btnSQL")
End If

Dim BtnSublimeTextEdit As New Windows.Forms.Button
With (BtnSublimeTextEdit)
.Name = "BtnSublimeTextEdit"
.Anchor = windows.Forms.AnchorStyles.Left Or windows.Forms.AnchorStyles.Bottom
.Top = tbtn.Top
.Left = 300
    .Width = 90 '.Size = tbtn.Size
.Text = "Sublime Text"
AddHandler .Click,AddressOf SublimeTextEdit_Click
End With
frmCodeEditor.Controls.Add(BtnSublimeTextEdit)


不知道为何,Sublime Text 3打开代码后,颜色无法加亮,变成白色,而如果我单独打开code.fox,是可以正常加亮颜色的,奇怪,哪位知道缘故?欢迎回帖,我补充好。
[此贴子已经被作者于2016/11/15 13:13:40编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/15 16:43:00 [只看该作者]

5.执行代码时,如何让鼠标显示繁忙的沙漏图标?群友 www.vafs.net-杰儒 提供了答案:
e.Sender.BaseControl.Cursor = System.Windows.Forms.Cursors.WaitCursor


System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor


执行完了,记得后面鼠标图标改回默认:
e.Sender.BaseControl.Cursor = System.Windows.Forms.Cursors.Arrow

参考:

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2016/11/15 17:45:00 [只看该作者]

不错,学习,感谢分享

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/21 13:42:00 [只看该作者]

6.今天碰到一个问题:下拉窗口,我选择后,为何下来列为空?帖子:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=93123&page=1&star=1
原来,用下拉窗口时,不能用表中下拉字段进行赋值,要用特殊的 e.Form.DropDownBox.Value,这个意思应该是当前下拉格子值。

搞定了,参考示例代码,主要是要用 e.form.dropdownbox.value替代具体的表字段。

代码改为,完美解决
Dim strProdType As String =e.Form.Controls("tblProdType").Table.Current("类别")
Dim strHGBM As String = e.Form.Controls("tblProdType").Table.Current("编码")
e.Form.DropDownBox.Value = strProdType '此处原来用Tables("Product").Current("F2"),这样不行
Tables("Product").Current("F3")=strHGBM
e.Form.DropDownBox.CloseDropDown()


如果说,你的下拉不想一个个拉下选择,想要多选多行,一次性选择相同值,可以扩展一下,这样写就可以一次性给多行选择好值了:
'多选
With Tables("Product")
If .BottomPosition > .Position Then
For i As Integer = .Position+1 To .BottomPosition
Dim r As Row = .Rows(i)
r(F2)=strProdType
r(F3)= strHGBM
Next
End If
End With

[此贴子已经被作者于2016/11/21 14:08:16编辑过]

 回到顶部
总数 28 1 2 3 下一页