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.