关于编辑文本框颜色高亮显示问题(150分)(50分)

  • 主题发起人 主题发起人 guanyue7613
  • 开始时间 开始时间
G

guanyue7613

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家谈谈怎么开发具有颜色高亮显示的文本框。

注意:
1、是自己想学开发这方面的技术,而不是找有这个功能的控件。
2、有合适的答案后再加100分。
 
你指的是获得焦点时高亮吧
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
edt1: TEdit;
edt2: TEdit;

{定义了两个通用的高亮处理函数,供所有的TEdit组件公用}
procedure EditOnExit(Sender: TObject);
procedure EditOnEnter(Sender: TObject);

private
{ Private declarations }
FLastContrl: TWinControl; {获得高亮时,记下谁最后获得了高亮,以便离开时恢复}
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.EditOnEnter(Sender: TObject);
begin
{这里使用了ActiveControl来获取当前处于焦点的控件}
if ActiveControl is TEdit then
begin
(ActiveControl as TEdit).Color := clSkyBlue;
FLastContrl := ActiveControl;{记下是谁最后获得焦点}
end;
end;

procedure TForm1.EditOnExit(Sender: TObject);
begin
(FLastContrl as TEdit).Color := clWindow;{离开时恢复}
end;

end.

补充:对所有的TEdit,把它的OnEnter和OnExit事件关联到这两个函数,可以在任务管理器设置,也可以用代码,文本框多的时候用代码来得简一些
 
如果在FormCreate里加上这么两行,那么你窗体上的TEdit控件不需要任何设置,一运行程序全支持高亮!
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
EdtControl: TEdit;
begin
for i := 0 to ComponentCount - 1 do
begin
if Components is TEdit then
begin
EdtControl := (Components as TEdit);
EdtControl.OnEnter := EditOnEnter;
EdtControl.OnExit := EditOnExit;
end;
end;
end;
 
OK,问题解答完毕
 
感谢icc的解答,我好像没有把我的意思表达清楚。
我的本来意思是:怎么用delphi写像ultraedit或notepad2的那种整个可以定义高亮选择颜色方案的文本编辑。
 
也就是整个文本编辑处都具有自定义的各种各样的颜色。。。。。
 
直接用TMS MEMO 控件,
 
哎,怎么没有高手指点指点
 
可以参考 SynEdit 控件,有源码的.
 
可是有的看不懂,想大家来讨论讨论。。。。。有兴趣的请来我的群里讨论:11104811
 
我还是要分
元旦快乐哈。新枫IT论坛开通,欢迎大家注册哈。

新枫科技--IT技术社区,为IT专业技术人员提供信息传播和服务平台

http://www.xftt.com.cn/bbs
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部