AniEdit.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:2k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit AniEdit;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, ExtCtrls, Graphics;
  5. type
  6.   TAniEdit = class(TEdit)
  7.   private
  8.     FInterval: Integer;
  9.     FTimer: TTimer;
  10.     procedure MoveShow(Sender: TObject);
  11.   public
  12.     constructor Create(AOwner: TComponent);
  13.     procedure StartAni;
  14.     procedure StopAni;
  15.   published
  16.     property Interval: Integer read FInterval write FInterval;
  17.   end;
  18. procedure Register;
  19. implementation
  20. constructor TAniEdit.Create(AOwner: TComponent);
  21. begin
  22.   inherited create(aowner);
  23.   color := clBlack;
  24.   font.Color := clWhite;
  25.   font.Size := 12;
  26.   font.Name := '仿宋_GB2312';
  27.   tabstop := false;
  28.   update;
  29.   FTimer := TTimer.Create(self);
  30.   FTimer.Enabled := False;
  31.   FTimer.OnTimer := MoveShow;
  32.   FInterval := 1000;
  33. end;
  34. procedure TAniEdit.StartAni;
  35. begin
  36.   FTimer.Interval := FInterval;
  37.   FTimer.Enabled := True;
  38. end;
  39. procedure TAniEdit.StopAni;
  40. begin
  41.   FTimer.Enabled := False;
  42. end;
  43. procedure TAniEdit.MoveShow(Sender: TObject);
  44. var
  45.   edit_length, i: integer;
  46.   edit_char: char;
  47.   chars: string;
  48. begin
  49.   chars := '';
  50.   if (length(text) = 0) then //如果编辑框中没有字符串,就默认赋值
  51.     text := 'Welcom you to use the software!';
  52.   edit_length := length(text);
  53.   edit_char := text[1];
  54.   //判断首字符是英文字母还是汉字
  55.   if (Ord(edit_char) > 127) then
  56.   begin
  57.     //如果是汉字就拷贝两个字符,代表一个汉字
  58.     chars := copy(text, 1, 2);
  59.     text := copy(text, 3, edit_length - 1) + chars;
  60.   end
  61.   else
  62.     //如果是英文字符的话,就拷贝一个字符
  63.     text := copy(text, 2, edit_length - 1) + edit_char;
  64. end;
  65. procedure Register;
  66. begin
  67.   RegisterComponents('Samples', [TAniEdit]);
  68. end;
  69. end.