в общем написал я ужас)
Код:
private
procedure otv; //объявление процедуры для произвольного выбора вопроса
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
zachet: Integer; // счетчик правильных ответов
implementation
uses Unit1, Unit5, Unit6;
{$R *.dfm}
procedure TForm2.otv;
var
r,i: Integer;
ArPanel: array of TControl;
Vis: boolean;
begin
for i := 0 to Form2.ControlCount -1 do
if Form2.Controls[i] is TPanel then
begin
SetLength(ArPanel, High(ArPanel) + 2); //Установка размера массива большего на 1
ArPanel[High(ArPanel)] := Form2.Controls[i];
end;
Randomize;
//Фрагмент нужен для того, чтобы не показывать панел второй раз
Repeat
r := Random(High(ArPanel) - Low(ArPanel) +1);
Vis := ArPanel[r].Visible;
ArPanel[r].Show;
Until not Vis ;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
if
(CheckBox26.Checked=true) and // проверка
(CheckBox27.Checked=true) and // ответа
(CheckBox28.Checked=false)and // на
(CheckBox29.Checked=true) and // верность
(CheckBox30.Checked=true)
then
zachet:= zachet+1;
otv; //произвольный выбор вопроса
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
if (Edit2.Text = 'земельного') and (Edit4.Text = 'кадастра') then
zachet:= zachet+1;
otv; //произвольный выбор вопроса
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
if
((Edit7.Text = 'количественные') and (Edit8.Text = 'качественные')) or
((Edit7.Text = 'количественное') and (Edit8.Text = 'качественное')) or
((Edit7.Text = 'качественное') and (Edit8.Text = 'количественное')) or
((Edit7.Text = 'качественные') and (Edit8.Text = 'количественные'))
then
zachet:= zachet+1;
otv; //произвольный выбор вопроса
end;
procedure TForm2.Button5Click(Sender: TObject);
begin
if (Edit5.Text = 'угодье') or (Edit5.Text = 'угодья') then
zachet:= zachet+1;
otv; //произвольный выбор вопроса
end;
end.
каждая кнопка находится на отдельной панели, а на панелях уже расположены остальные компоненты.
проблема в следующем:
код для рандомного выбора панели, который, записан в процедуру не запоминает панели, которые уже были показаны. и можно ли, в той же процедуре сделать так, чтобы при показе определенного количества панелей, выполнялось какое-либо дейтсвие?