Delphi以其优秀的界面和简单的用法深受广大程序员的喜爱笔者经过摸索自做了一个具有动态显示特性的控件只柙谥鞒绦蛑械饔酶每丶囊桓龇椒纯墒迪侄允尽T诙允镜耐?为了不影响主程序做其他的事情笔者采用了比较流行的线程技术
一. 方案
自做一个父类为TEdit的控件应该有一个Text属性能自由地输入要动态显示的内容; 并且有一个MoveShow方法使的Text的内容能动态的显示在主程序中创建一个线程启动线程时调用该控件的MoveShow方法
二. 制作控件
启动New Component选Tedit为父类建立L_Tedit类并创建L_editpas 再编写L_editpas 如下
unit L_Edit;
interface
uses
Windows Messages SysUtils Classes Graphics
Controls Forms Dialogs
StdCtrls;
type
L_TEdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent); override;
procedure MoveShow;
published
{ Published declarations }
property Text;
end;
procedure Register;
implementation
constructor L_TEditCreate(AOwner:TComponent);
begin
inherited create(aowner);
color:=clblue;
fontColor:=clyellow;
fontSize:=;
fontName:= ;@仿宋_GB;;
tabstop:=false;
update;
end;
procedure L_TEditMoveShow;
var
edit_lengthi:integer;
edit_char:char;
chars: string;
begin
chars:=;;;
if (length(text)=) then
text:=Welcom you to use the software!;
edit_length:=length(text);
for i:= to edit_length do
begin
edit_char:=text[];
if (Ord(edit_char) >) then
if length(chars) > then
begin
text:=copy(textedit_length)+chars;
chars:=;;;
end
else
begin
chars:=copy(text);
text:=copy(textedit_length);
end
else
begin
text:=copy(textedit_length)+edit_char;
end;
update;
sleep();
end;
end;
procedure Register;
begin
RegisterComponents(;Samples; [L_TEdit]);
end;
end
再保存该文件
启动Image Editor 创建L_Editdcr 选New >Bitmap自己做一个图标保存名为L_TEDIT(与新建的类同名)注意L_Editdcr 与L_Editpas 要在同一个目录中(缺省为\delphi\lib目录中再单击Install Component 选Into new package属性页填上L_Editpas 的路径和文件名并在该路径下新建L_Editdpk 文件之后一直单击OK即可此时我们可以在Delphi 的工具栏Sample 一项中看到自己创建的图标
三. 编写主程序
在主窗体Form中放一自己创建的控件在Text的属性中填上要显示的文字(中英文都可)与该窗体对应的L_unitpas内容如下
unit L_Unit;
interface
uses
Windows Messages SysUtils Classes
Graphics Controls Forms Dialogs
StdCtrls L_Edit;
type
Tmythread=class(TThread)
protected
procedure Execute; override;
end;
TForm = class(TForm)
L_TEdit: L_TEdit;
Button: TButton;
procedure FormCreate(Sender: TObject);
procedure ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form: TForm; <