![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Form.Close
ZX48 © (2006-08-14 17:39:00)GjПомите плиз. Не могу закрыть форму. В коде Form4.close, но не выполняется. В чем может быть проблема?
ZX48 (2006-08-14 18:05:00) [21]>>И это тоже в сторону. Вынеси работу с ini в отдельный файл, грузи его ДО создания формы.
Т.е. создать отдельный модуль и потом из него вызывать основную форму?
tesseract (2006-08-14 18:02:00) [22]
> if exit=1 then form4.Close;....(там ничего информативного
> далее нет)
так делать нельзя, и р,и в OnShow тоже.
> form4.iniconnect(form4) ;
а работать с создающимся объектом не вежливо, у тебя MessageDlg вообще показывается?
И это тоже в сторону. Вынеси работу с ini в отдельный файл, грузи его ДО создания формы.
ZX48 (2006-08-14 18:00:00) [23]2 tesseract:Это все отрабатывается. Закрытие не работает...
tesseract (2006-08-14 17:58:00) [24]
> if (FileExists(fn + '\base_cfg.cfg') = false) then
if not FileExists(fn + '\base_cfg.cfg') then
> if (MessageDlg(Файл недоступен',mtConfirmation, [mbYes,
> mbNo], 0) = mrYes) then
>
А если так
if (MessageDlg(Файл недоступен',mtConfirmation, [mbYes, mbNo], 0) <> mrNo) then
?
ZX48 (2006-08-14 17:56:00) [25]Извините, то что выше из более раннего pas. Приведу то что сейчас есть.Вот более полный код, что бы понятнее было:
procedure TForm4.FormCreate(Sender: TObject);
var ini:tinifile;
begin
fn:= GetCurrentDir;
form4.iniconnect(form4) ;
ini:=tinifile.Create(fn+'\config.cfg');
try
akt:= strtoint (ini.readstring('print','akt',''));
otchet:= strtoint (ini.readstring('print','otchet',''));
base:= ini.readstring('main','base','');//ini.Free;
except
iniconnect(form4) ;
end;
BaseConnect(Form4);
showmessage (inttostr(exit));
ini.Free;
if exit=1 then form4.Close;....(там ничего информативного далее нет)
procedure TForm4.BaseConnect(Sender:TObject);
begin
try
if data.ADOConnection1.Connected then data.ADOConnection1.Connected := false;
data.ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ base +';Persist Security Info=False';
data.Action(form4);
//MessageDlg('Подключение к базе данных '+base+' выполненно успешно!', mtInformation,[mbOk], 0);
except
if MessageDlg('База данных '+base+' недоступна или поврежден файл конфигурации! Выберите базу данных и сохраните настройки.',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
form4.N10Click(form4);
//BaseConnect(Form4);
end else
begin
showmessage ('Программа будет закрыта!') ;
close;
end;
end;
end;
procedure TForm4.IniConnect(Sender: TObject);
var FileHandle : integer;
begin
if (FileExists(fn + '\config.cfg') = false) then
begin
if (MessageDlg('Файл недоступен',
mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
FileHandle := FileCreate(fn + '\config.cfg');
FileClose(FileHandle);
form4.N10Click(form4);
form4.NFClick(Form4);
//iniconnect(Form4);
end else
begin
showmessage ('Программа будет закрыта!') ;
close;
end;
end;
end;
ANB (2006-08-14 17:54:00) [26]Есть у меня подозрение, что все это в OnCreate вызывается. Потому и не кусает :)
StriderMan (2006-08-14 17:52:00) [27]давай весь модуль формы
ZX48 (2006-08-14 17:50:00) [28]2 begin...end:
нет ничего
ZX48 (2006-08-14 17:50:00) [29]да. мессага то вылезает. и по выходу из процедуры я тоже тестовую месагу ставил - тоже показывается. не могу понять почему это? хотя тут же в меню по кнопке закрывается...
begin...end (2006-08-14 17:50:00) [30]В обработчике OnClose формы что-нибудь есть?
StriderMan (2006-08-14 17:48:00) [31]
> showmessage ('Программа будет закрыта!') ;
а до сюда программа вообще доходит?
ZX48 (2006-08-14 17:46:00) [32]Не работает никак. Даже ставил вместо закрытия переменную, присваивал ей значение в труе, а потом в другой процедуре (из которой идет вызов этой) пробовал по ее значению вызывать close - не работает почему-то.
Джо (2006-08-14 17:43:00) [33]Убрать .form4, о результатах доложить :)
ZX48 (2006-08-14 17:41:00) [34]procedure TForm4.IniConnect(Sender: TObject);
var FileHandle : integer;
begin
if (FileExists(fn + '\base_cfg.cfg') = false) then
begin
if (MessageDlg(Файл недоступен',mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
FileHandle := FileCreate(fn + '\config.cfg');
FileClose(FileHandle);
form4.N10Click(form4);
form4.NFClick(Form4);
//iniconnect(Form4);
end else
begin
showmessage ('Программа будет закрыта!') ;
form4.close;
end;
end;
end;
tesseract (2006-08-14 17:39:00) [35]
> Form.Close
код приведи.
StriderMan (2006-08-14 17:39:00) [36]код в студию