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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 03:24   #1
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию не могу понять почему при закрытии формы не выполняються действия описанные в formclose?

Доброго времени суток форумчане!!вопрос точно глупый но я его все же задам!есть программа которая при нажатии на крестик должна сохранять некотороые значения в файл .ini!вызов и код выглядит вот так:
Код:
type
  TForm1 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
------------------------------------------------------------------
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Ini : TiniFile;
begin
  Ini := TiniFile.Create (curdir + '\main.ini');
  ini.WriteString('main', 'auditoria', sedit1.Text);
  ini.WriteString('main', 'gruppa', sedit2.Text);
  Ini.Free; osenki.Free; students.Free;
end;
а вот содержимое файла:
[main]
auditiria=
gruppa=
и получаеться что если вручную записать в файл группу и аудиторию то при formcreate он их без проблем копирует на форму а вот если изменил значение в процессе работы с формой то он не сохраняет нужные значения в файл!! что я делаю не так????
maloy_ya вне форума Ответить с цитированием
Старый 21.01.2011, 03:38   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

curdir - кто такой и чему равен?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.01.2011, 03:44   #3
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

ах да сорри:
Код:
procedure TForm1.FormCreate(Sender: TObject);
 var
  ini:tinifile;
 begin
  randomize;
  if FindWindow('Tform1',cap)>0 then halt;
  caption:=cap;
  sskinmanager1.SkinName:='Cold (internal)';
  getdir (0, curdir);
maloy_ya вне форума Ответить с цитированием
Старый 21.01.2011, 03:45   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А Form1.OnClose равен Form1.FormClose?
и
Какое отношение к sedit1 и sedit2 имеют osenki и students? Вы уверенны, что на момент закрытия окна в sedit1 и sedit2 записаны нужные вам значения?

Последний раз редактировалось Sibedir; 21.01.2011 в 03:48.
Sibedir вне форума Ответить с цитированием
Старый 21.01.2011, 03:57   #5
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

значения sedit1 b sedit2 в выполнении программы используються для указания в какой аудитории и какая группа студнта из списка students! а вот:
Form1.OnClose равен Form1.FormClose? нет!! а должен быть?? и если да то где это указать??
maloy_ya вне форума Ответить с цитированием
Старый 21.01.2011, 04:00   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

В инспекторе объектов.
Проверте так (по топорному)
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  ...
  ShowMessage ('FormClose');
end;
Если при нажатии на [X] появляется сообщение 'FormClose', то Form1.OnClose = Form1.FormClose.

Последний раз редактировалось Sibedir; 21.01.2011 в 04:04.
Sibedir вне форума Ответить с цитированием
Старый 21.01.2011, 04:05   #7
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

ээээ.....а можно немного подробнее у меня делфя 2010 установленна??
maloy_ya вне форума Ответить с цитированием
Старый 21.01.2011, 04:07   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Насколько я помню инспектор объектов есть и в 2010.
Sibedir вне форума Ответить с цитированием
Старый 21.01.2011, 04:09   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в инспекторе обьектов, на событие OnClose открыть список и выбрать FormClose.
если вдруг не будет его там, то сделайте двойной щелчек по полю OnClose, появится заготовка обработчика, перенесите код туда.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.01.2011, 05:42   #10
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

все заработало!!!спасибо огромное за помощь!!!сорри за нубские вопросы!!
maloy_ya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять почему не работает микрофон Stilet Компьютерное железо 8 08.10.2010 16:54
Почему не работает...хм....понять не могу! Артур Иваныч Microsoft Office Excel 9 01.12.2009 17:58
Не могу понять почему блокируется папка Paul Hindenburg Общие вопросы Delphi 4 07.05.2009 10:47
как сделать заставку при закрытии программы(событие TForm1.FormClose)? beegl Общие вопросы Delphi 9 03.04.2009 09:00