用richtextbox做了个文本编辑器...但是有几个问题...
1.如何实现对文本的排版...选中的文本左对齐右对齐还有居中...(10分)
2.如何实现查找替换...弹出格窗体有查找替换的相关操作...怎样从另外的窗体对richtextbox中的文本信息进行查找呢...要用什么代码连接一下么...(10分)
3.打开一个只读文件...编辑完保存的时候如何让他提示文件只读无法保存呢...或者一开始就无法编辑...(5分)
4.一个下拉菜单里怎么加横线以区分各个选项的种类...(5分)
5.怎样实现撤消和重复...(10分)
6.richtextbox中好像是无法编辑表格的把...那能不能变通下...在另外的窗体中用另外的控件编辑好表格再插入呢...具体是要怎么搞啊...(10分)这个东西做了有几天了...现在把问题会集一下...希望有人指导下...最好能给出实现的代码...orz

解决方案 »

  1.   

    //1.如何实现对文本的排版...选中的文本左对齐右对齐还有居中...(10分)
    Private Sub Option1_Click(Index As Integer)
       If RichTextBox1.SelLength > 0 Then
          RichTextBox1.SelAlignment = Index
       End If
    End Sub//4.一个下拉菜单里怎么加横线以区分各个选项的种类...(5分)
    设计菜单时将菜单的标题设为"-",显示时就出现分隔横线
      

  2.   

    2.如何实现查找替换...弹出格窗体有查找替换的相关操作...怎样从另外的窗体对richtextbox中的文本信息进行查找呢...要用什么代码连接一下么...(10分)给你个思路,具体自己写代码
    查找:
    1、RichTextBox1.Find 查找的字符, 开始位置2、记住第一次查找后的位置3、用循环再  RichTextBox1.Find 查找的字符, 开始位置2 ,直到历遍textbox替换:  RichTextBox1.SelText = 要代替的字符3.打开一个只读文件...编辑完保存的时候如何让他提示文件只读无法保存呢...或者一开始就无法编辑...(5分)  一开始无法编辑: richtextbox1.Locked=true
      编辑完提示文件只读无法保存: 直接用msgbox  提示就行了,然后不管按那个健都不进行保存操作
      
      

  3.   

    奥..查找替换我自己写好了...
    把代码拿出来...大家帮我看看有什么要改动的把....
    Dim x As Integer
    Dim txtClient As RichTextBoxPrivate Sub Command1_Click()'查找
        Dim strlen As Integer
        strlen = Len(Text1.Text)
        x = main.RichTextBox1.Find(Text1.Text, x + strlen, , 8)
        If x <> -1 Then
            main.RichTextBox1.SetFocus
            main.RichTextBox1.SelStart = x
        Else: MsgBox "未找到指定字符", vbOKOnly, "未找到"
        End IfEnd SubPrivate Sub Command2_Click()'替换
        Dim str As String
        main.RichTextBox1.Text = Replace(main.RichTextBox1.Text, Text1.Text, Text2.Text, , , 1)End SubPublic Sub FindandReplace(ByRef Tb As RichTextBox)'与主界面连接
        Set txtClient = Tb
        frmFind.Show , txtClient.Parent
    End SubPrivate Sub Command3_Click()'取消
     frmFind.Hide
    End Sub
    Private Sub Text1_Change()
        x = -1
    End Sub
    我没有用循环...就查找一次...点击一次...
    不过查找中文的话好像有问题...英文的话没问题...
    问题就是只能查找到第一个...后边的找不到...好像跟插图图片的问题差不多...怎么办捏..关于只读...我的意思是只读属性怎么判断呢...
    刚我试了下word...如果文件只读的话...也不提示...直接就转到另存为了...
      

  4.   

    "不过查找中文的话好像有问题...英文的话没问题..."Check:
    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67699&lngWId=1
      

  5.   

    获取文件的属性:
    Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
    设置文件的属性:
    Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long具体参阅相应的API用法
      

  6.   

    获取文件的属性:直接=GetAttr(FileName)
      

  7.   

    谢谢各位帮忙...只读已经搞定了...算是把。..
    的确GetAttr(FileName)比较简单...API的等有空慢慢看把...
    还差5和6了...大家帮想下哈...
    小弟先谢谢了...
      

  8.   

    //5.怎样实现撤消和重复...(10分)
    第一次撤销,第二次重复
    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
    Private Const EM_UNDO = &HC7Private Sub Command1_Click()
      Dim i As Integer
      i = SendMessage(Text1.hwnd, EM_UNDO, 0, 0)
    End Sub
      

  9.   

    i = SendMessage(RichTextBox1.hwnd, EM_UNDO, 0, 0)
      

  10.   

    //6.richtextbox中好像是无法编辑表格的把
    RichTextBox1.OLEObjects.Add , , "C:\1.xls"
      

  11.   

    这个只能撤消一次...我在网上看到个可以无限撤消的...http://www.dvbbs.net/tech/program/2006051773241.asp我从里边截取了一些...但是在我的程序里运行的时候
    '申明API函数 
    Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" _ 
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ 
    lParam As Long) As Long '常数 
    Public Const WM_USER = &H400 
    Public Const EM_HIDESELECTION = WM_USER + 63 
    这两句报错...说:
    常数、固定长度字符串、数组、用户定义类型以及Declare语句不允许作为对象模块的Public成员
    下边的两个子程序也看不懂...@_@
      

  12.   

    //6.richtextbox中好像是无法编辑表格的把
    RichTextBox1.OLEObjects.Add , , "C:\1.xls"这个方法跟OLE一样把...表格的编辑什么的都是直接用excel的把...
    那能不能再改下...就是点击插入表格之后...自动在目录下建个*.xls文件...然后插入完成之后再自动删除...这能做到么...
      

  13.   

    Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" _ 
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ 
    lParam As Long) As Long '常数 
    Public Const WM_USER = &H400 
    Public Const EM_HIDESELECTION = WM_USER + 63 
    这两句报错...说:
    常数、固定长度字符串、数组、用户定义类型以及Declare语句不允许作为对象模块的Public成员
    Public全换成private
      

  14.   

    这里有您想要的东西:
    www.cnpopsoft.com [华普软件]关于RichTextBox的很多功能扩展包括RTF文本格式规范这里都能够找到!~