以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 编辑器代码着色 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81079) |
-- 作者:lsy -- 发布时间:2016/2/18 9:46:00 -- [求助] 编辑器代码着色 代码编辑器中,代码字符分类着色,能增强代码的可读性,没这功能也可以,但显得不专业。 边输入边着色,比较容易,代码简单,也不影响输入速度,因为输入过程中要做很多判断,着色只是在已有判断的基础上的顺带功能。 这样的着色,在代码重排或者代码是粘贴进来的或者是打开文件加载进来的,就不会起作用。 从狐表的着色效果看,也算不错了,只是有点不完美: 有时不能着色,有时误着色,特别是在双引号、单引号比较多的时候,不但影响着色,还影响代码精灵的判断。 感觉还能影响代码输入速度。 现在想用一个按钮,手工点击,使代码分类着色,与其他的功能分开,这样不会影响输入速度。 代码着色是逐行进行的,只要解决一行代码的着色就解决问题了。 求教高效的着色代码,不管什么方式,有效、高效,就行。 注:编辑器是用RichTextBox控件制作的。
|
-- 作者:大红袍 -- 发布时间:2016/2/18 9:49:00 -- 用空格分隔各个字符,如果是关键字,就着色不就行了? |
-- 作者:lsy -- 发布时间:2016/2/18 9:51:00 -- 关键就在于分隔符,只用空格做分隔符,是不能满足要求的。 为了使代码输入更灵便,分隔符种类越多越好。
|
-- 作者:lsy -- 发布时间:2016/2/18 9:53:00 -- 还有,在按钮中写代码,为什么只对背景颜色有效,对字符颜色无效? |
-- 作者:大红袍 -- 发布时间:2016/2/18 9:54:00 -- 分隔符可以任意多个啊。
Dim str As String = "dim a as string = CurrentTable.name" |
-- 作者:lsy -- 发布时间:2016/2/18 9:55:00 -- 比如这段代码,放在TextChanged事件中有效,在按钮中就无效了: If Selected_Text.Trim.StartsWith("\'") Then start = _rtx.SelectionStart _rtx.SelectionStart = First_Index _rtx.SelectionLength = Selected_Text.Length _rtx.SelectionColor = Color.Gray _rtx.SelectionStart = start Else Dim Type_str As String() = DataTables("代码格式化嫦娥").GetComboListString("VB类型","VB类型 Is Not Null").Split("|") Dim Key_str As String() = DataTables("代码格式化嫦娥").GetComboListString("VB关键","VB关键 Is Not Null").Split("|") start = _rtx.SelectionStart - old_s.Length If start < 0 Then _rtx.SelectionStart = 0 Else _rtx.SelectionStart - = old_s.Length End If _rtx.SelectionLength = old_s.Length If Array.IndexOf(Type_str,old_s) > - 1 Then _rtx.SelectionColor = Color.Violet ElseIf Array.IndexOf(Key_str,old_s) > - 1 Then _rtx.SelectionColor = Color.Blue ElseIf IsNumeric(old_s) Then _rtx.SelectionColor = Color.Green Else _rtx.SelectionColor = Color.Black End If _rtx.SelectionStart + = old_s.Length End If _rtx.SelectionLength = 0 _rtx.SelectionColor = Color.Black
|
-- 作者:大红袍 -- 发布时间:2016/2/18 9:57:00 -- 你加入msgbox定位错误
选中对应的字符,然后才能设置颜色的。 [此贴子已经被作者于2016/2/18 9:56:52编辑过]
|
-- 作者:lsy -- 发布时间:2016/2/18 9:59:00 -- 写代码的人,对于空格并不总是很在意,比如逗号后面,往往就不留空格。 |
-- 作者:lsy -- 发布时间:2016/2/18 10:03:00 -- 以下是引用大红袍在2016/2/18 9:57:00的发言:
你加入msgbox定位错误
选中对应的字符,然后才能设置颜色的。 肯定先选中了,不然背景颜色也不会设置成功。 [此贴子已经被作者于2016/2/18 9:56:52编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/2/18 10:03:00 -- 代码那里,肯定是必须有分隔符的啊,或空格或点或回车 等等,分割开来就行啊 [此贴子已经被作者于2016/2/18 10:02:45编辑过]
|