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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 23:58   #1
roxy7
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 53
По умолчанию Событие OnCreate для формы

Помогите разобраться тут:

Код:
...
procedure TForm2.FormCreate(Sender: TObject);
begin
 PrgDir := ExtractFileDir(Application.ExeName)+'\';
 Ini := TIniFile.Create(PrgDir+'Test1.ini');
 Caption := Ini.ReadString('Тест', 'Название теста', 'Тест без названия');
 QuestNum :=0;
 Scores := 0;
 QuestCount := Ini.ReadInteger('Тест',
                     'Количество вопросов ', -2);
 if QuestCount<-1 then
  Ini.WriteInteger('Тест', 'Количество вопросов ', -1);
end;

procedure TForm2.FormBCreate(Sender: TObject);
begin
PrgDir := ExtractFileDir(Application.ExeName)+'\';
 Ini := TIniFile.Create(PrgDir+'Test2.ini');
 Caption := Ini.ReadString('Тест', 'Название теста', 'Тест без названия');
 QuestNum :=0;
 Scores := 0;
 QuestCount := Ini.ReadInteger('Тест',
                     'Количество вопросов ', -2);
 if QuestCount<-1 then
  Ini.WriteInteger('Тест', 'Количество вопросов ', -1);;
end;

...

procedure TForm2.Buttun1Click(Sender: TObject);
begin
Form2.OnCreate:=FormCreate;
 if Button1.Visible then
   begin
    Button1.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.OnCreate:=FormBCreate;
 if Button2.Visible then
   begin
    Button2.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;
Обратите внимание на 2 имена процедуры обработки события OnCreate для формы.
Проблема в том, что при нажатии первой кнопки (button1) получаю тест (тест из файла test1.ini), а при нажатии второй - тот же самый тест... А должно быть из файла test2. Вот не получилось... Что делать?
roxy7 вне форума Ответить с цитированием
Старый 04.11.2011, 00:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Форма то создается вами или один раз?
я бы уж тогда OnShow применил..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.11.2011, 13:17   #3
Афанасий[vedma]
Вечнодумающий
Форумчанин
 
Аватар для Афанасий[vedma]
 
Регистрация: 14.07.2011
Сообщений: 161
По умолчанию

определенно OnShow
Из лоскутов Добра, шьется полотно Зла
Афанасий[vedma] вне форума Ответить с цитированием
Старый 05.11.2011, 23:31   #4
roxy7
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Афанасий[vedma] Посмотреть сообщение
определенно OnShow
А это тоже не получилось...
Почему, что это не сработало?
Код:
Form2.OnCreate:=FormBCreate;
roxy7 вне форума Ответить с цитированием
Старый 06.11.2011, 00:32   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему, что это не сработало?
Да потому что формы ты создаешь еще до выполнения всех этих кодов.
Код:
procedure TForm2.Buttun1Click(Sender: TObject);
begin
FormCreate(Self);
 if Button1.Visible then
   begin
    Button1.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
FormBCreate(Self);
 if Button2.Visible then
   begin
    Button2.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;
Понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2011, 15:21   #6
roxy7
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Да потому что формы ты создаешь еще до выполнения всех этих кодов.
Код:
procedure TForm2.Buttun1Click(Sender: TObject);
begin
FormCreate(Self);
 if Button1.Visible then
   begin
    Button1.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
FormBCreate(Self);
 if Button2.Visible then
   begin
    Button2.Hide;
    QuestNum := 1;
    ShowQuestion;
   end;
end;
Понятно?
Понятно. У меня получилось! Спасибо вам большое!
roxy7 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли создать событие для формы VBA? segail Microsoft Office Excel 20 25.01.2016 12:15
Событие на отрисовку формы. dmitriegorovih Компоненты Delphi 25 01.11.2011 18:49
Событие сворачивание формы KoBRaAndrey Общие вопросы Delphi 7 02.06.2010 10:32
Событие click по заголовку формы? Polotenchik Общие вопросы Delphi 3 24.06.2009 12:48
Событие OnShow формы Antoha Общие вопросы Delphi 4 12.02.2008 21:13