Показать сообщение отдельно
  #1  
Старый 30.05.2010, 22:14
sheffdop sheffdop вне форума
Прохожий
 
Регистрация: 30.05.2010
Сообщения: 10
Репутация: 10
По умолчанию помогите поправить код

в общем написал я ужас)
Код:
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.
каждая кнопка находится на отдельной панели, а на панелях уже расположены остальные компоненты.
проблема в следующем:
код для рандомного выбора панели, который, записан в процедуру не запоминает панели, которые уже были показаны. и можно ли, в той же процедуре сделать так, чтобы при показе определенного количества панелей, выполнялось какое-либо дейтсвие?
Ответить с цитированием