![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В OnCreate формы запретить отображение этой формы
DelphiLexx © (2006-06-05 12:29:00)В OnCreate формы происходит не которые вычисдения, если в ходе вычислений возникает ошибка, то необходимо запретить отображение и существование этой формы.
Я в OnCreate делал self.Free это приводит к ошибке.
Deka (2006-06-08 10:06:00) [1]Как не выпустить с конвеера собранный автомобиль, если не получилось поставить внутрь руль? IMHO надо менять дизайн (выносить вычисления) и все будет в порядке.
tesseract (2006-06-07 09:24:00) [2]
> кстати, то что в onCreate нельзя менять висибилити, не означает,
> что нельзя менять положение, размер и стиль бордюра...
> это если возвращаться к древним временам =)
В oncreate лучше ничего воопще не менять, потом запаришься искать что, где.
tButton (2006-06-07 04:31:00) [3]кстати, то что в onCreate нельзя менять висибилити, не означает, что нельзя менять положение, размер и стиль бордюра... это если возвращаться к древним временам =)
tesseract (2006-06-06 14:04:00) [4]
> хм... тупанул малость, но тем не менееесли форма не главна
> и вычисление не при запуске проги, то почему бы не производить
> вычисления вне создаваемой формы (в главной, например) и
> уже исходя из результатов этих вычислений либо создавать,
> либо нет
Даже если и главная, что этому мешает ?
esVer (2006-06-06 14:03:00) [5]procedure ShowMyForm;
begin
if CalculateError then exit;
MyForm:=TMyForm.Create(Application);
MyForm.ShowModal;
end;
tButton (2006-06-06 11:34:00) [6]хм... тупанул малость, но тем не менее
если форма не главна и вычисление не при запуске проги, то почему бы не производить вычисления вне создаваемой формы (в главной, например) и уже исходя из результатов этих вычислений либо создавать, либо нет
tButton (2006-06-06 09:45:00) [7]
> если форма - главная, то Application.ShowMainForm := False;
> в противном случае Visible := False - должно работать.
висибл в onCreate менять нельзя
а halt(0) - это как шотган, "bang! you're dead!"
не красиво, но эффективно.
evvcom (2006-06-06 08:11:00) [8]
> то необходимо запретить отображение и существованиеэтой
> формы.
Ну так в конструкторе надо возбудить исключение.
raise TException.Create('Ошибка создания формы!');
PZ (2006-06-06 07:04:00) [9]If <ОШИБКА> then
Application.Terminate
jack128 (2006-06-06 00:23:00) [10]если форма - главная, то Application.ShowMainForm := False; в противном случае Visible := False - должно работать.
Loginov Dmitry (2006-06-05 14:42:00) [11]Ну а вдруг именно такой вариант устроит автора :)
tesseract (2006-06-05 14:40:00) [12]
> Попробуй Halt
не издевайся.
Loginov Dmitry (2006-06-05 14:39:00) [13]Попробуй Halt
Тфьу (2006-06-05 14:30:00) [14]Может Action:=caFree поможет? Тока я не пробовал...
DrPass (2006-06-05 14:03:00) [15]или как вариант - SendMessage(handle, wm_close...)
Palladin (2006-06-05 12:54:00) [16]Это спроектировано неверно, конечно, но если кустарным способом, то. Создай флаг. В OnCreate выставь его если активировать форму не нужно и в обработчике OnActivate формы вызови Close.
tesseract (2006-06-05 12:43:00) [17]Вычисления в oncreate вообще не полагается делать, там должны быть только конструкторы объектов (которые должны создаваться после вызова конструтора формы).
Почему нельзф выполнить расчёты до создания формы?
Вынеси их в отдельный модуль.
DelphiLexx (2006-06-05 12:37:00) [18]
> А проверить данные до создания формы нельзя?
Н
ельзя
DelphiLexx (2006-06-05 12:36:00) [19]
> Self.Visible := False;
Не помагает
tesseract (2006-06-05 12:36:00) [20]
> Я в OnCreate делал self.Free это приводит к ошибке.
onCreate лишь начало цепочки событий. Низя так.
А проверить данные до создания формы нельзя?