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.