请教有关richedit的使用! 我想在richedit中把指定位置的背景涂上指定的颜色.例如,把第3行,第5,6,7字符位置(从左起)的背景涂上绿色.请举例,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 VC的,可以看看http://www.programsalon.com/download.asp?type_id=73 以下是我写的代码,给个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 HELPEnd;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. [email protected]谢谢xzhifei(飞) !!! Delphi怎么让程序像屏幕键盘那样单击按钮时不切换前台? 为什么无法触发mouseup事件 事务写法 怎么样发布sql数据库应用程序 这学期每一组的课程设计都这么难!怎么办? delphi中调用DLL文件时,数组是怎么调用的(实参数组和形参数组的相互传递)? 前台更改后台數據連接的問題 关于table存储的问题,高手也要进呀。 小弟问个关于线程的问题 CB IDPOP3邮件附件无法接收 foxnt蛛蛛好,这两天看com 搜到您写的文章,由于资质愚钝,仍然无法理解,能否发个原码给我 如何排序???????
http://www.programsalon.com/download.asp?type_id=73
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.
谢谢xzhifei(飞) !!!