unit _fm_Top;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, Buttons;
type
Tfm_Top = class(TForm)
sgTop : TStringGrid;
edCW : TEdit;
laPhrase : TLabel;
Panel1 : TPanel;
Timer1 : TTimer;
Timer2 : TTimer;
btClear : TSpeedButton;
btOk : TBitBtn;
edName : TLabel;
edPoints : TLabel;
procedure sgTopDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure btOKClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure btClearClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fm_Top : Tfm_Top;
implementation
{$R *.DFM}
uses _fm_Main, _fm_Setup, LangSupp, Aphorism;
var
Aphor : string;
const
ColorBest = cardinal(clYellow);
ColorLast = cardinal($00777777);
PlaceCount = 10;
iR = (((ColorLast div $00001) mod $100) - (ColorBest div $00001) mod $100
) div PlaceCount;
iG = (((ColorLast div $00100) mod $100) - (ColorBest div $00100) mod $100
) div PlaceCount;
iB = (((ColorLast div $10000) mod $100) - (ColorBest div $10000) mod $100
) div PlaceCount;
procedure Tfm_Top.sgTopDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with Sender as TDrawGrid do begin
Canvas.Brush.Color := ColorBest + (iR + iG*$100 + iB*$10000)*ARow;
Canvas.FillRect(Rect);
Canvas.TextRect(Rect, Rect.Left+1, Rect.Top+4, sgTop.Cells[ACol,ARow]);
end
end;
procedure Tfm_Top.FormCreate(Sender: TObject);
begin
sgTop.ColWidths[0] := 20;
sgTop.ColWidths[1] := 150;
sgTop.ColWidths[2] := 50;
sgTop.ColWidths[3] := 280;
end;
procedure Tfm_Top.Timer1Timer(Sender: TObject);
const
speed = 5;
var
a : string;
begin
edCW.Enabled := (TopAction=taShow);
if TopAction=taShow then
if fm_Top.Height>140 then begin
fm_Top.Height := fm_Top.Height - speed;
sgTop.Top := sgTop.Top + speed
end
else begin
Timer1.Enabled := false;
ActiveControl := edCW;
if Timer2.Tag<>0 then begin
repeat
a := GetAphorism;
until Length(a)<=40;
if Length(a)<=40 then begin
Aphor := a;
Timer2.Enabled := true;
end
end
end
else
if fm_Top.Height<340 then begin
fm_Top.Height := fm_Top.Height + speed;
sgTop.Top := sgTop.Top - speed
end
else
Timer1.Enabled := false;
Application.ProcessMessages;
end;
procedure Tfm_Top.btOKClick(Sender: TObject);
begin
if TopAction=taShow then begin
TopNames[Tag].CoolWord := fm_Top.edCW.Text;
LoadTopNames;
TopAction := taHide;
Timer1.Enabled := true;
end
else
Close;
end;
procedure Tfm_Top.FormActivate(Sender: TObject);
begin
edCW.Text := '';
if TopAction<>taNone then
Timer1.Enabled := true;
end;
procedure Tfm_Top.Timer2Timer(Sender: TObject);
begin
if length(Aphor)>0 then begin
edCW.Text := edCW.Text + Aphor[1];
Delete(Aphor,1,1);
end
else begin
Timer2.Enabled := false;
btOKClick(Sender);
end
end;
procedure Tfm_Top.btClearClick(Sender: TObject);
var
i : integer;
begin
if MessageBox(0,PChar(_T_mClear),
PChar(Application.Title),
MB_YESNO or MB_TASKMODAL or
MB_ICONQUESTION or MB_DEFBUTTON2)=IDYES then begin
for i:=0 to 9 do begin
TopNames[i].Name := '';
TopNames[i].Points := '';
TopNames[i].CoolWord := '';
end;
LoadTopNames;
end;
end;
procedure Tfm_Top.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#27 then
Close
end;
end.