unit _fm_PMoves;


interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls;



type
   
   Tfm_PMoves     = class(TForm)
                    sgMoves    : TStringGrid;
   
   Panel1     : TPanel;
   
   cbPlayer   : TComboBox;
   
   laPlayers  : TLabel;
   
   laTotal    : TStaticText;
   

procedure FormActivate(Sender: TObject);
   

   procedure sgMovesSelectCell(Sender: TObject; ACol, ARow: Integer;
     var CanSelect: Boolean);
      

      procedure cbPlayerChange(Sender: TObject);
         

         procedure FormKeyPress(Sender: TObject; var Key: Char);
            
            private
            { Private declarations }
            public
            { Public declarations }
end;



var
   
   fm_PMoves     : Tfm_PMoves;
   
   
   implementation
   
   uses
   _fm_Main, LangSupp;
   
   
      {$R *.DFM}
   
      {------------------------------------------------------------------------------}

procedure Tfm_PMoves.FormActivate(Sender: TObject);
   

var
   i          : integer;
   

begin
   
   Top := 0;
   
   Width := 370;
   
   Height := Screen.Height-40;
   
   Left := Screen.Width-Width;
   
   
   cbPlayer.Clear;
   
   cbPlayer.Items.Add(_H_PAll);
   
   for i:=1 to MaxPlayers do
      
      if (Players[i].Name.Visible) then
         cbPlayer.Items.Add(Players[i].Name.Text);
   
   cbPlayer.ItemIndex := 0;
   
   
   sgMoves.ColWidths[0] := 30;
   
   sgMoves.ColWidths[1] := 100;
   
   sgMoves.ColWidths[2] := 100;
   
   sgMoves.ColWidths[3] := 40;
   
   sgMoves.ColWidths[4] := 40;
   
   sgMoves.ColWidths[5] := 130;
   
   sgMoves.ColWidths[6] := 130;
   
   
   sgMoves.Cells[0,0] := _C_cTurn;
   
   sgMoves.Cells[1,0] := _H_LPName;
   
   sgMoves.Cells[2,0] := _C_cWord;
   
   sgMoves.Cells[3,0] := _C_cPoints;
   
   sgMoves.Cells[4,0] := _H_LTotal;
   
   sgMoves.Cells[5,0] := _H_LUsed;
   
   sgMoves.Cells[6,0] := _H_LGot;
   
   
   cbPlayerChange(Self);
   
   end;


{------------------------------------------------------------------------------}

procedure Tfm_PMoves.sgMovesSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
   

var
   i,j,PNo        : integer;
   

begin
   
   {Если список пуст, то его не обрабатывать}
   if (ARow=0) or (sgMoves.Cells[0,1]='') then
      exit;
   
   
   {Прорисовываем на поле место будущего слова}
   for i:=0 to MaxWordLength-1 do
      
      for j:=0 to MaxWordLength-1 do
         Field[i,j].JustSet:=false;
   
   
   PNo := strtoint(sgMoves.Cells[0,ARow]);
   
   
   if (PlayerMove[PNo].Word[1]<>'"') or  {Skipping of the TURN -> No Showing}
      (PlayerMove[PNo].UsedLetters='')   {SUGGEST -> No Showing} then begin
      
      fm_Main.sg.Repaint;
      
      exit;
      
      end;
   
   
   SCol := PlayerMove[PNo].Pos.x;
   
   SRow := PlayerMove[PNo].Pos.y;
   
   
   if PlayerMove[PNo].DirHor then
      for i:=1 to length(Trim(PlayerMove[PNo].Word))-2 do
         
Field                                            [SCol+i-1,SRow].JustSet:=true
else                                                    for i:=1 to length(Trim(PlayerMove[PNo].Word))-2 do
            
Field                                            [SCol,SRow+i-1].JustSet:=true;
   
   
   fm_Main.sg.Repaint;
   
   end;


{------------------------------------------------------------------------------}

procedure Tfm_PMoves.cbPlayerChange(Sender: TObject);
   

var
   i,c          : integer;
   

begin
   
   sgMoves.OnSelectCell := nil;
   
   for i:=0 to 6 do
      sgMoves.Cells[i,1]:='';
   
   sgMoves.RowCount := MaxMoves + 1;
   
   c := 1;
   
   
   for i:=1 to PlayerMoves do
      
      if (cbPlayer.ItemIndex=0) or
         (Trim(PlayerMove[i].PlayerName)=Trim(cbPlayer.Text)) then begin
         
         sgMoves.RowCount := sgMoves.RowCount + 1;
         
         sgMoves.Cells[0,c] := inttostr(i);
         
         sgMoves.Cells[1,c] := PlayerMove[i].PlayerName;
         
         sgMoves.Cells[2,c] := PlayerMove[i].Word;
         
         sgMoves.Cells[3,c] := inttostr(PlayerMove[i].Points);
         
         sgMoves.Cells[4,c] := inttostr(PlayerMove[i].Total);
         
         sgMoves.Cells[5,c] := PlayerMove[i].UsedLetters;
         
         sgMoves.Cells[6,c] := PlayerMove[i].ReceivedLetters;
         
         inc(c);
         
         end;
   
   
   if c=1 then
      c := 2;
   
   sgMoves.RowCount := c;
   
   sgMoves.FixedRows := 1;
   
   sgMoves.Row := c-1;
   
   sgMoves.OnSelectCell := sgMovesSelectCell;
   
   if sgMoves.Cells[0,1]='' then
      laTotal.Caption := Format(_H_cTotal,[0])
   else
      laTotal.Caption := Format(_H_cTotal,[c-1]);
   
   end;



procedure Tfm_PMoves.FormKeyPress(Sender: TObject; var Key: Char);
   
begin
   
   if Key=#27 then
      Close
   end;


end.