unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
lbl1: TLabel;
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var s: Boolean;
begin
s:=False;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Index, i, num: Integer;
e, s: Boolean;
begin
if s then
{Åñëè ïðîãðàìììà ñíîâà âûçîâåò ïðîöåäóðó îáðàáîòêè,
áóäåò âûïîëíåí îïåðàòîð Exit - íåìåäëåííûóé âûõîä èç ïðîöåäóðû}
Exit;
s:=True;
for Index:=0 to 4 do //Îïåðàòîð break ïðåðûâàåò
//âûïîëíåíèå öèêëà
if Sender = Controls[i] then
break; //Îïðåäåëÿåòñÿ, êàêîé ôëàæîê áûë ïåðåêëþ÷åí
{Êîãäà âûïîëíåíèå öèêëà çàâåðøàåòñÿ, çíà÷åíèå ïåðåìåííîé Index
ñîîòâåòñòâóåò ïåðåêëþ÷åííîìó ôëàæêó}
{Åñëè çíà÷åíèå ñâîéñòâà Checked (Óñòàíîâëåí) ðàâíî False (Íåò),
ôëàæîê ñáðîøåí, à åñëè True (Äà) - óñòàíîâëåí.
Íîìåð ôëàæêà â ìàññèâå îïðåäåëÿòåñÿ ïåðåìåííîé Index}
if not(Controls[Index] as TCheckBox).Checked then
{Óñëîâèå âûïîëåíî, åñëè ôëàæîê ñåé÷àñ ñáðîøåí,
ò.å. äî çåë÷êà îí áûë óñòàíîâëåí}
(Controls[Index] as TCheckBox).Checked:=True
{Ïðîãðàììèðîâàíèå èçìåíåíèÿ ñîñòîÿíèÿ "äîïîëíèòåëüíûõ
ôëàæêîâ". Òåêóùèé ôëàæîê óæå ïåðåêëþ÷åí}
else
begin
num:=Index+1; //Ïåðåêëþ÷åíèå äâóõ ñëåäóþùèõ ôëàæêîâ
if Index = 4 then
num:=0; //Èçìåíåíèå ñîñòîÿíèÿ íîâîãî ôëàæêà
//Ñîñòîÿíèå ôëàæêà íàäî ïîìåíÿòü íà ïðîòèâîïîëîæíîå
(Controls[num] as TCheckBox).Checked:=
not(Controls[num] as CheckBox).Checked;
//Âûïîëíåíèå ïðîâåðêè íà âûõîä çà ïðåäåëû ìàññèâà
num:=num+1;
if Index = 3 then
num:=0;
(Controls[num] as TCheckBox).Checked:=
not(Controls[num] as CheckBox).Checked;
end;
//Ãîëîâîëîìêà ðåøåíà, åñëè óñòàíîâëåíû âñå ïÿòü ôëàæêîâ
e:=True;
for i:= 0 to 4 do
e:=e and (Controls[i] as TCheckBox).Checked;
{Ïîñëå öèêëà çíà÷åíèå îñòàíåòñÿ ðàâíûì True,
åñëè âñå ôëàæêè óñòàíîâëåíû}
if e then //Ãîëîâîëîìêà ðåøåíà
for i:=0 to 4 do
begin
(Controls[i] as TCheckBox).Caption:='Ïîáåäà';
(Controls[i] as TCheckBox).Enabled:=False; //Îòêëþ÷åíèå ôëàæêîâ
end;
s:=False;
end;
end.