以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- TO狐狸爸爸重要建议:为FoxTable做出更强大的简码输入助手和排版功能! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=141545) |
-- 作者:旭日生 -- 发布时间:2019/10/3 16:21:00 -- TO狐狸爸爸重要建议:为FoxTable做出更强大的简码输入助手和排版功能! 在输入方面,FoxTable的输入助手挺好。但对于常做录入的人来说,这个软件似乎还应该能做出更强大的功能。如“简码录入”功能。 今天先来求教狐狸爸爸如何做“简码录入”这个功能。 目前我做到了录入“临时题名列”时,录入代码使用“简录代码表”中“简录码”,“临时题名列”自动读取“正确文本”列内容,这就做到了“简码录入”功能。 但是,实际上我需要的是在“题名”或其它文字列中连续录取,键盘送入“简录码”时,自动转换成“临时题名列”中“正确文本”。但我不知道如何写这样要求的代码?使用e.Sender.Text之类,都存在问题。该如何解决呢? 顺便说2句: 1、虽然五笔、搜狗之类的输入法,可以实现简码自定义录入,但至少搜狗实现起来比较繁琐。如果FoxTable能实现的话,那么,录入起来更方便简捷。 2、感觉FoxTable在排版功能上增加一些易用功能,甚至可以作为字处理软件,就象当年的CCED,文本处理毕竟要一段一段处理,无非安置在一个一个空格里而已。果然如此,人人可使用这个软件,应该极其有利这个软件普及推广哦。
[此贴子已经被作者于2019/10/3 16:38:08编辑过]
|
-- 作者:WELOVEFOX -- 发布时间:2019/10/4 8:28:00 -- 我什么都不知道,我只知道列里面有个数据字典。 |
-- 作者:狐狸爸爸 -- 发布时间:2019/10/4 9:53:00 -- 这不是很简单的事情吗。 http://www.foxtable.com/webhelp/topics/0624.htm 代码:
Select Case e.DataCol.Name Case "临时题名列" Dim dr As DataRow= DataTables("简录代码表").Find("简录码 = \'" & e.NewValue & "\'") If dr IsNot Nothing Then e.NewValue = dr("正确文本") End If End Select |
-- 作者:旭日生 -- 发布时间:2019/10/4 11:44:00 -- 这还不是我想要的。我要的应该是实际上这样的: 我要录入很长的题名(如“传真电报:宿迁市宿豫区纪委关于2017年中秋国庆期间廉洁自律和厉行节约工作的通知”),我希望在正常录入方法(如搜狗拼音法)基础上,能够更多地利用Foxtable以自定义词组甚至句子编码的方式录入,即通过“简录代码表”中定义“简录码”和“正确文本”。 我现在困难的不是从其它表中读出“正确文本”,而是如何实现连续录入,不知道代码怎么写。类似下面示意: 录入1,自动上“简录代码表”中的“正确文本”“传真电报”,“题名”列为:“传真电报” 录入“:”,题名列为“传真电报:” 录入“2”:自动上“简录代码表”中的“正确文本”宿迁市宿豫区”,题名列自动组合成为:“传真电报:宿迁市宿豫区“……这样就自然地象正常录入一样连续地录入。 [此贴子已经被作者于2019/10/4 11:51:21编辑过]
|
-- 作者:旭日生 -- 发布时间:2019/10/4 17:55:00 -- 感觉问题的关键是要能在非窗口状态下的普通表格中及时读出送出的键盘录入的代码,如“czdb”、"wls."。不知道这个代码怎么写?e.txt?e.sender? 似乎要用到中转列才可行。
[此贴子已经被作者于2019/10/4 17:55:21编辑过]
|
-- 作者:有点酸 -- 发布时间:2019/10/5 14:59:00 -- 一样的,DataColChaning事件,掌握了基本的ABC,千变万化随他来: Select Case e.DataCol.Name Case "题名" If e.NewValue > "" Then Dim pts() As String = e.NewValue.Split(":") Dim vas(pts.Length - 1) As String For i As Integer = 0 To pts.Length - 1 Dim dr As DataRow = DataTables("简录代码表").Find("简录码 = \'" & pts(i) & "\'") If dr IsNot Nothing Then vas(i) = dr("正确文本") End If Next e.NewValue = String.Join(":",vas) End If End Select
|
-- 作者:旭日生 -- 发布时间:2019/10/5 15:45:00 -- 谢谢有点酸。这样的用法给我惊倒了,没想到Foxtabale有如此千变万化的能力!只是这仍然不是我想要的。 我想要用的是: 正常录入字句的时候,送出的字母代码后,优先从“简录代码表”中找对应词句,找不到即和普通输入法一样,直接读取输入法(如搜狗拼音法)中的文字。换句话说,就是将“简录代码表”作为方便快捷的自定义词句表使用,服务于正常录入工作的。
[此贴子已经被作者于2019/10/5 15:45:25编辑过]
|
-- 作者:旭日生 -- 发布时间:2019/10/5 16:21:00 -- 改进了一下代码,似乎好多了。但仍然存在不能连续输入和即时反映录入情况的问题,一行必须一次性录入结束,不太符合录入习惯。 Select Case e.DataCol.Name Case "题名" If e.NewValue > "" Then Dim pts() As String = e.NewValue.Split(":") Dim vas(pts.Length - 1) As String For i As Integer = 0 To pts.Length - 1 Dim dr As DataRow = DataTables("简录代码表").Find("简录码 = \'" & pts(i) & "\'") If dr IsNot Nothing Then vas(i) = dr("正确文本") Else vas(i) = pts(i) ’ msgbox(pts(i)) End If Next e.NewValue = String.Join(":",vas) End If If e.NewValue IsNot Nothing Then e.NewValue = e.NewValue.replace(":","") End If End Select
[此贴子已经被作者于2019/10/5 16:28:45编辑过]
|
-- 作者:shenyl0211 -- 发布时间:2019/10/5 18:33:00 -- 然后,你输入3,要求把输入2时的内容删除,又然后,你改回输入2,要求把输入3时的内容删除。累不累?直接用多值字段不就彻底解决了?不需要任何代码 |
-- 作者:shenyl0211 -- 发布时间:2019/10/5 18:35:00 -- 这样,你也无需记住1、2、3……代表什么 |