以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]窗口显示单元格内容时右缩进  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=93083)

--  作者:jyh7081
--  发布时间:2016/11/20 10:29:00
--  [求助]窗口显示单元格内容时右缩进
建了个窗体,放入了TextBox1控件,随时显示选中单元格内容,窗体的timertick事件原代码为:
       static ps As String = Nothing
       Dim s As String = CurrentTable.Name & "." & CurrentTable.Cols(CurrentTable.ColSel).name
       If ps <> s Then
       e.Form.controls("TextBox1").BindingField = CurrentTable.Name & "." & CurrentTable.Cols(CurrentTable.ColSel).name
       End If
       ps = s

现在想让窗体在显示单元格内容时,每个换行符产生的行右缩进2 个字符,根据蓝版的代码,改动后放入窗体的timertick事件,出错,请帮忙看看错在哪里:
        Dim arr() As String = e.Form.Controls("TextBox1").Split(vbcrlf)
        Dim str As String = ""
        For Each s1 As String In arr
            str = str & vbcrlf &  "    " &  s1.Trim(vbcr,vblf)
        Next
        e.Form.Controls("TextBox1").text = str.TrimStart(vbcr,vblf)

--  作者:有点青
--  发布时间:2016/11/20 10:44:00
--  

参考代码

 

Dim str As String = "12345" & vbcrlf & "678910"
msgbox(str)
str = str.Replace(chr(10), "")
str = "    " & str.Replace(chr(13), vbcrlf & "    ")
msgbox(str)


--  作者:jyh7081
--  发布时间:2016/11/20 15:57:00
--  
没改成功。
忘了一点,原表格中的drawcell事件已经添加了选中该行时,本行单元格字符右缩进的代码。
现在想让随机窗口中显示字符的方式与单元格显示的相同。


图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:有点青
--  发布时间:2016/11/20 18:26:00
--  
static ps As String = Nothing
Dim s As String = CurrentTable.Name & "." & CurrentTable.Cols(CurrentTable.ColSel).name
If ps <> s Then
    Dim str As String = CurrentTable.Value
    str = str.Replace(chr(10), "").replace("    ", "")
    str = "    " & str.Replace(chr(13), vbcrlf & "    ").trim()
    CurrentTable.Value = str
    e.Form.controls("TextBox1").BindingField = CurrentTable.Name & "." & CurrentTable.Cols(CurrentTable.ColSel).name
End If
ps = s

--  作者:jyh7081
--  发布时间:2016/11/20 19:55:00
--  
但是,关闭随机窗口后,主表显示缩进的字符没有还原,留下了2个空格。
--  作者:有点蓝
--  发布时间:2016/11/21 8:38:00
--  
BeforeSelChanged事件

If e.OldRange.RowSel <> e.NewRange.RowSel OrElse e.OldRange.ColSel <> e.NewRange.ColSel \'如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) \'获得原来选择的行
        If r.IsNull(e.OldRange.ColSel) = False
            Dim str As String
            Dim arr() As String = r(e.OldRange.ColSel).Replace(chr(10), "").split(chr(13))
            For Each s As String In arr
                str &= s.TrimStart() & vbcrlf
            Next
            r(e.OldRange.ColSel) = str.TrimEnd(vbcr,vblf)
        End If
    End If
End If

--  作者:jyh7081
--  发布时间:2017/2/3 11:25:00
--  [求助]帮助修改窗口文字缩进代码
蓝版主,过年好!
发现上面的代码有点问题,就是当连续选择同一列的不同单元格时,窗口文字就不缩进了;换一列再返回点击这一列,又可以缩进了。不知是何原因?

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口缩进.table

[此贴子已经被作者于2017/2/3 11:32:36编辑过]

--  作者:有点色
--  发布时间:2017/2/3 11:38:00
--  
测试没问题。你用哪段代码?做个例子发上来。
--  作者:jyh7081
--  发布时间:2017/2/3 11:41:00
--  
例子已发。就是当连续选择同一列的不同单元格时,窗口文字就不缩进了。
我指的是窗口,不是数据表。
谢谢!
[此贴子已经被作者于2017/2/3 11:42:25编辑过]

--  作者:有点色
--  发布时间:2017/2/3 11:42:00
--  
static ps As String = Nothing
Dim s As String = CurrentTable.RowSel & "," & CurrentTable.ColSel
If ps <> s Then
    Dim str As String = CurrentTable.Value
    str = str.Replace(chr(10), "").replace("    ", "")
    str = "    " & str.Replace(chr(13), vbcrlf & "    ").trim()
    CurrentTable.Value = str
    e.Form.controls("TextBox1").BindingField = CurrentTable.Name & "." & CurrentTable.Cols(CurrentTable.ColSel).name
End If
ps = s