Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 20:35   #1
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию Повторный запуск формы в Delphi

Здравствуйте.

Делаю тест на Delphi. Состоит из 2х форм - ввод данных (Form2. не закрывается) и сам тест(Form1. закрывается в конце через пароль).

1)При переходе к форме теста , в первый раз, она запускается с начала и всё работет. НО при повторном вводе данных и переходе к форме теста открывается самый конец формы - ввод пароля для выхода(это требование).
Собственно, как сделать так, чтобы при нажатии на кнопку форма теста всегда начиналась с начала.
Вызывается банально (с передачей данных студента):
Код:
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
    Form1.Label4.Caption:= Edit1.Text + ',группа ' + Edit2.Text;
    if Edit2.Text='' then Form1.Label4.Caption:= Edit1.Text;
    if Edit1.Text='' then Form2.Image2.Visible:=true
    else Form1.Showmodal;
end;
Action := caFree; и прочее не помогало

2) Не так важно, как первое, но всё же... Есть массив вопросов, возможно ли сделать их рандомную выдачу в тетсте?

Массив:
Код:
 test: array [0..xd-1] of TQ = (
 (que:'Вопрос №1'; v1:'1'; v2:'2'; v3:'3'; v4:'4'; r: 2; ball: 1),
 (que:'Вопрос №2'; v1:'1'; v2:'2'; v3:'3'; v4:'4'; r: 2; ball: 1),
 (que:'Вопрос №3'; v1:'1'; v2:'2'; v3:'3'; v4:'4'; r: 0; ball: 1),
 (que:'Вопрос №4'; v1:'1'; v2:'2'; v3:'3'; v4:'4'; r: 3; ball: 1),
 (que:'Вопрос №5'; v1:'1'; v2:'2'; v3:'3'; v4:'4'; r: 0; ball: 1));
Выдача его в тест:
Код:
procedure TForm1.GenerateNewQ;

 procedure zero;
  begin
   RadioGroup1.Buttons[0].Checked:= false;
   RadioGroup1.Buttons[1].Checked:= false;
   RadioGroup1.Buttons[2].Checked:= false;
   RadioGroup1.Buttons[3].Checked:= false;
  end;

 begin
   begin
   inc(num);
   label1.Caption:= Q+inttostr(num)+_of+inttostr(N);
   label2.Caption:= test[num-1].que;
   RadioGroup1.Items.Strings[0]:= ' '+test[num-1].v1;
   RadioGroup1.Items.Strings[1]:= ' '+test[num-1].v2;
   RadioGroup1.Items.Strings[2]:= ' '+test[num-1].v3;
   RadioGroup1.Items.Strings[3]:= ' '+test[num-1].v4;
   zero;
   ri:= test[num-1].r;
  end
 end;
Заранее благодарен. Опыта еще не хвтатет...
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 05.01.2012, 22:20   #2
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

1. если вы динамически создаете каждый раз форму, то при нажатии на кнопку в Form2 сначала создаете Form1
Код:
Applicaion.CreateForm(TForm1, Form1);
далее идет ваш код. в Form1 в событии onClose формы пишите
Код:
action:=caFree //тем самым освобождая память
не забудьте из кода проекта (файл dpr) удалить строку создания form1
2. наверно надо выбирать числа из диапазона 0..xd, сравнивать с массивом уже показанных тестов (в этот массив заносим те номера тестов которые показали пользователю) и если номера нет в массиве - показываем тест и заносим в массив номер. если есть - генерируем следующий
Dush вне форума Ответить с цитированием
Старый 05.01.2012, 22:51   #3
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию

При добавлении в OnClose
Код:
action:=caFree
запускается, но во 2ой раз выдает ошибку.


И даже если вставить к кнопке вызова формы
Код:
Applicaion.CreateForm(TForm1, Form1);
Тоже выдает ошибку "Undecleared identifier"

Возможно, есть альтернативный выход? Так как много что перепробовал и ничего. Как-то странно , форма закрывается, а данные в ней не сбрасываются.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 05.01.2012, 23:47   #4
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

добавьте в uses Form2 модуль содержащий Form1
Dush вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие файлов и повторный запуск программы m0dE^ Общие вопросы Delphi 9 03.08.2011 20:45
Запуск макроса из формы tgm Microsoft Office Excel 2 09.06.2011 13:47
Запуск формы при нажатии кнопки SkrudjMakdak Microsoft Office Excel 4 30.07.2010 22:29
Запуск приложения и активность формы fuv Win Api 3 11.05.2007 20:30