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.