我想在richedit中把指定位置的背景涂上指定的颜色.
例如,把第3行,第5,6,7字符位置(从左起)的背景涂上绿色.
请举例,谢谢!

解决方案 »

  1.   

    VC的,可以看看
    http://www.programsalon.com/download.asp?type_id=73
      

  2.   

    以下是我写的代码,给个E-MAIL,发给你:Unit Unit1;InterfaceUses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ComCtrls, ImgList, Abccombo, richedit, ToolWin, RxCombos, Menus;Type
      TForm1 = Class(TForm)
        ToolBar1: TToolBar;
        ToolButton6: TToolButton;
        ToolButton1: TToolButton;
        ToolButton2: TToolButton;
        ToolButton3: TToolButton;
        ToolButton5: TToolButton;
        ToolButton4: TToolButton;
        ToolButton7: TToolButton;
        ToolButton8: TToolButton;
        ToolButton9: TToolButton;
        ToolButton11: TToolButton;
        ToolButton10: TToolButton;
        ToolButton12: TToolButton;
        ToolButton14: TToolButton;
        ToolButton16: TToolButton;
        ToolButton17: TToolButton;
        ToolButton18: TToolButton;
        ToolButton21: TToolButton;
        ToolButton15: TToolButton;
        ToolButton13: TToolButton;
        ToolButton19: TToolButton;
        ToolButton20: TToolButton;
        ImageList1: TImageList;
        RichEdit1: TRichEdit;
        StatusBar1: TStatusBar;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        ComboBox1: TComboBox;
        FontComboBox1: TFontComboBox;
        ColorComboBox1: TColorComboBox;
        ColorComboBox2: TColorComboBox;
        MainMenu1: TMainMenu;
        Edit1: TMenuItem;
        Object1: TMenuItem;
        Links1: TMenuItem;
        N1: TMenuItem;
        GoTo1: TMenuItem;
        Replace1: TMenuItem;
        Find1: TMenuItem;
        N2: TMenuItem;
        PasteSpecial1: TMenuItem;
        Paste1: TMenuItem;
        Copy1: TMenuItem;
        Cut1: TMenuItem;
        N3: TMenuItem;
        Repeatcommand1: TMenuItem;
        Undo1: TMenuItem;
        File2: TMenuItem;
        Exit2: TMenuItem;
        N6: TMenuItem;
        PrintSetup2: TMenuItem;
        Print2: TMenuItem;
        N7: TMenuItem;
        SaveAs2: TMenuItem;
        Save2: TMenuItem;
        N8: TMenuItem;
        Close1: TMenuItem;
        Open2: TMenuItem;
        New2: TMenuItem;
        ToolButton22: TToolButton;
        Procedure ToolButton2Click(Sender: TObject);
        Procedure ToolButton3Click(Sender: TObject);
        Procedure ComboBox1Change(Sender: TObject);
        Procedure RichEdit1SelectionChange(Sender: TObject);
        Procedure ToolButton1Click(Sender: TObject);
        Procedure ColorComboBox1Change(Sender: TObject);
        Procedure FontComboBox1Click(Sender: TObject);
        Procedure ColorComboBox2Click(Sender: TObject);
        Procedure ToolButton15Click(Sender: TObject);
        Procedure ToolButton18Click(Sender: TObject);
        Procedure ToolButton13Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      End;Var
      Form1: TForm1;Implementation{$R *.DFM}Procedure TForm1.ToolButton2Click(Sender: TObject);
    Begin
      If OpenDialog1.Execute Then
        Begin
          RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
        End;
    End;Procedure TForm1.ToolButton3Click(Sender: TObject);
    Begin
      If SaveDialog1.Execute Then
        RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);End;Procedure TForm1.ComboBox1Change(Sender: TObject);
    Begin
      RichEdit1.SelAttributes.Size := StrToIntDef(ComboBox1.Text, 9);End;Procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
    Begin
      Try
        FontComboBox1.FontName := RichEdit1.SelAttributes.Name;
      Except
        exit;
      End;End;Procedure TForm1.ToolButton1Click(Sender: TObject);
    Begin
      RichEdit1.Clear;
    End;Procedure TForm1.ColorComboBox1Change(Sender: TObject);
    Begin
      RichEdit1.SelAttributes.Color := ColorComboBox1.ColorValue;End;Procedure TForm1.FontComboBox1Click(Sender: TObject);
    Begin
      RichEdit1.SelAttributes.Name := FontComboBox1.FontName;End;Procedure TForm1.ColorComboBox2Click(Sender: TObject);
    Var Fmt: TCharFormat2;
    Begin
      Fmt.cbSize := SizeOf(Fmt); //这里放传递的结构大小,系统通过这个知道传递的是CharFormat还是CharFormat2
      Fmt.dwMask := CFM_COLOR Or CFM_BACKCOLOR; //告诉系统只有字体颜色和背景颜色两个字段的值有效
    //  Fmt.crTextColor := clRed;//设置字体颜色
      Fmt.crBackColor := ColorComboBox2.ColorValue; //设置字体背景色
      RichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, integer(@Fmt)); //发EM_SETCHARFORMAT消息给RichEdit
      //其中SCF_SELECTION表示该设置只对选择的文字有效,具体用法参考win32 SDK HELP
    End;Procedure TForm1.ToolButton15Click(Sender: TObject);
    Begin
      If fsItalic In RichEdit1.SelAttributes.Style Then
        RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsItalic]
      Else
      RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsItalic];
    End;Procedure TForm1.ToolButton18Click(Sender: TObject);
    Begin
      If fsUnderline In RichEdit1.SelAttributes.Style Then
        RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsUnderline]
      Else
      RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsUnderline];End;Procedure TForm1.ToolButton13Click(Sender: TObject);
    Begin
      If fsBold In RichEdit1.SelAttributes.Style Then
        RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold]
      Else
       RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold];End;End.
      

  3.   

    [email protected]
    谢谢xzhifei(飞) !!!