说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

做动态显示的控件-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
做动态显示的控件-Delphi资料

Delphi以其优秀的界面和简单的用法深受广大程序员的喜爱.笔者经过摸索

自做了一个具有动态显示特性的控件。只需在主程序中调用该控件的一个方法即可实现动态显示。在动态显示的同时

为了不影响主程序做其他的事情

笔者采用了比较流行的线程技术。

一. 方案

自做一个父类为TEdit的控件

应该有一个Text属性,能自由地输入要动态显示的内容; 并且有一个MoveShow方法,使的Text的内容能动态的显示。在主程序中创建一个线程,启动线程时,调用该控件的MoveShow方法。

二. 制作控件

启动New Component

选Tedit为父类,建立L_Tedit1类,并创建L_edit.pas. 再编写L_edit.pas 如下:

unit L_Edit;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

StdCtrls;

type

L_TEdit1 = 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_TEdit1.Create(AOwner:TComponent);

begin

inherited create(aowner);

color:=clblue;

font.Color:=clyellow;

font.Size:=12;

font.Name:= '@仿宋_GB2312';

tabstop:=false;

update;

end;

procedure L_TEdit1.MoveShow;

var

edit_length

i:integer;

edit_char:char;

chars: string;

begin

chars:='';

if (length(text)=0) then

text:=’Welcom you to use the software!’;

edit_length:=length(text);

for i:=1 to edit_length do

begin

edit_char:=text[1];

if (Ord(edit_char) >127) then

if length(chars) >1 then

begin

text:=copy(text

2

edit_length-2)+chars;

chars:='';

end

else

begin

chars:=copy(text

1

2);

text:=copy(text

2

edit_length-1);

end

else

begin

text:=copy(text

2

edit_length-1)+edit_char;

end;

update;

sleep(100);

end;

end;

procedure Register;

begin

RegisterComponents('Samples'

[L_TEdit1]);

end;

end.

再保存该文件。

启动Image Editor 创建L_Edit.dcr

选New- >Bitmap,自己做一个图标,保存名为L_TEDIT1(与新建的类同名)。注意L_Edit.dcr 与L_Edit.pas 要在同一个目录中(缺省为\delphi\lib目录中。再单击Install Component. 选Into new package属性页,填上L_Edit.pas 的路径和文件名,并在该路径下新建L_Edit1.dpk 文件。之后一直单击OK即可。此时我们可以在Delphi 的工具栏Sample 一项中看到自己创建的图标。

三. 编写主程序

在主窗体Form1中放一自己创建的控件,在Text的属性中填上要显示的文字(中英文都可)。与该窗体对应的L_unit1.pas内容如下:

unit L_Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

StdCtrls

L_Edit;

type

Tmythread=class(TThread)

protected

procedure Execute; override;

end;

TForm1 = class(TForm)

L_TEdit11: L_TEdit1;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

MyThread1:TMyThread;

implementation

{$R *.DFM}

Procedure TMyThread.Execute;

begin

while true do form1.L_TEdit11.MoveShow;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

MyThread1:=TMyThread.Create(false);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

showmessage('Welcome You!');

end;

end.

该程序在Delphi4.0 for win95 下编译运行通过。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘