您的位置:程序门 -> vb -> 基础类



如何在文本框中的一句文字中用回车键使它分成两段?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何在文本框中的一句文字中用回车键使它分成两段?[已结贴,结贴人:sirdoyle]
发表于:2007-03-01 19:00:07 楼主
比如:
        点击帖子右上的“管理”链接,进入管理页面,在要给分的回复后的文本框中填写分数,然后输入自己的密码,点击“给分”按钮。
        点击帖子右上的“管理”链接,进入管理页面,在要给分的回复后 ¦的文本框中填写分数,然后输入自己的密码,点击“给分”按钮。
        点击帖子右上的“管理”链接,进入管理页面,在要给分的回复后
        的文本框中填写分数,然后输入自己的密码,点击“给分”按钮。

而且回车后裂开的那段文字开头也空两格。
发表于:2007-03-01 20:16:081楼 得分:0
text1.text   =   left(text1.text,   20)   &   vbcrlf   &   "         "   &   mid(text1.text,   21)
   
————————————————————————————————————
写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。
发表于:2007-03-01 20:48:442楼 得分:3
设计时:text1.multiline=true
text1.text   =   left(text1.text,   20)   &   vbcrlf   &   "         "   &   mid(text1.text,   21)
发表于:2007-03-01 22:56:223楼 得分:0
text1.text   =   left(text1.text,   20)   &   vbcrlf   &   "         "   &   mid(text1.text,   21)
文本框一行字又不一定是20个的,怎么让它灵活点,这在windows记事本中是个很普通的功能嘛。
发表于:2007-03-02 08:19:334楼 得分:1
text1.text   =   left(text1.text,   20)   &   vbcrlf   &   "         "   &   mid(text1.text,   21)
文本框一行字又不一定是20个的,怎么让它灵活点,这在windows记事本中是个很普通的功能嘛。
===========================================================================
配合text1.selstart使用
发表于:2007-03-02 14:03:365楼 得分:0
配合text1.selstart使用
请把代码一起给出。
发表于:2007-03-02 17:50:476楼 得分:4
option   explicit

private   declare   function   sendmessage   lib   "user32 "   alias   "sendmessagea "   (byval   hwnd   as   long,   byval   wmsg   as   long,   byval   wparam   as   long,   lparam   as   any)   as   long
const   em_getsel   =   &hb0
const   em_linefromchar   =   &hc9
const   em_lineindex   =   &hbb

public   sub   getpos(byval   hwnd5   as   long,   lineno   as   long,   colno   as   long)
        dim   i   as   long,   j   as   long
        dim   lparam   as   long,   wparam   as   long
        dim   k   as   long
        i   =   sendmessage(hwnd5,   em_getsel,   wparam,   lparam)
        j   =   i   /   2   ^   16   '取得目前光标所在位置前有多少个byte
        lineno   =   sendmessage(hwnd5,   em_linefromchar,   j,   0)   '取得光标前面有多少行
        lineno   =   lineno   +   1
        k   =   sendmessage(hwnd5,   em_lineindex,   -1,   0)
        '取得目前光标所在行前面有多少个byte
        colno   =   j   -   k   +   1
end   sub

private   sub   text1_keydown(keycode   as   integer,   shift   as   integer)
if   keycode   =   vbkeyreturn   then
        dim   i   as   long,   j   as   long
        getpos   text1.hwnd,   i,   j      
        text1   =   left(text1,   (i   -   1)   *   text1.maxlength   +   j   -   1)   +   "     "   +   right(text1,   len(text1)   -   (i   -   1)   *   text1.maxlength   -   j   +   1)
        text1.selstart   =   (i   -   1)   *   text1.maxlength   +   j   -   1
end   if
end   sub


这个只对英文支持,由于中文占两个字节,所以你要改一下getpos函数,自己做吧
发表于:2007-03-02 17:58:327楼 得分:0
说错了,不是改getpos函数,而是改这句
text1   =   left(text1,   (i   -   1)   *   text1.maxlength   +   j   -   1)   +   "     "   +   right(text1,   len   (text1)   -   (i   -   1)   *   text1.maxlength   -   j   +   1)
发表于:2007-03-02 18:04:558楼 得分:0
还是有问题,我把属性搞错了,.maxlength   不能用,我的意思是要得到一行的字条数
发表于:2007-03-03 12:14:129楼 得分:0
哪位继续解答。
发表于:2007-03-03 14:51:5310楼 得分:2
text1.text   =   left(text1.text,   len(text1.text)   /   2)   &   vbcrlf   &   "     "   &   mid(text1.text,   len(text1.text)   /   2   +   1)

这样就是从中间截取   不知道符不符合楼主的要求啊
发表于:2007-03-03 18:16:1411楼 得分:0
text1.text   =   left(text1.text,   len(text1.text)   /   2)   &   vbcrlf   &   "     "   &   mid(text1.text,   len(text1.text)   /   2   +   1)

这样就是从中间截取   不知道符不符合楼主的要求啊

不是正中间,是光标所在的位置为准分开的两半。
请继续应助。
发表于:2007-03-03 18:37:1712楼 得分:5
private   function   strleft(str   as   string,   nlen   as   long)   as   string
        if   nlen   <=   0   then
                strleft   =   " "
        else
                strleft   =   left(str,   nlen)
        end   if
end   function

private   sub   text1_keypress(keyascii   as   integer)
        if   keyascii   =   13   then
                keyascii   =   0
                text1.text   =   strleft(text1.text,   text1.selstart)   &   vbcrlf   &   "         "   &   ltrim(mid(text1.text,   text1.selstart   +   1))
        end   if
end   sub
发表于:2007-03-03 23:14:4713楼 得分:0
text1.text   =   left(text1.text,   20)   &   vbcrlf   &   "         "   &   mid(text1.text,   21)


快速检索

最新资讯
热门点击