Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как закрыть форму сразу же после создания / 21 сообщений из 21, страница 1 из 1
10.12.2002, 16:18
    #32078018
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Привет.
Форма1 вызывает форму2

form2:=TForm2.Create(application)
form2.showmodal;

Как сделать, чтоб сразу после создания формы2 проверялось условие и в случае успеха форма2 закрывалась.
...
Рейтинг: 0 / 0
10.12.2002, 16:30
    #32078025
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Если Form1 - созданна первой - т.е. стала главной в приложении:
Код: plaintext
1.
Application.ShowMainForm := False;
...
Рейтинг: 0 / 0
10.12.2002, 16:31
    #32078030
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
А куды энто пхать?
...
Рейтинг: 0 / 0
10.12.2002, 18:24
    #32078134
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Дык не про то код тот :))

Если нужно модальную форму закрыть, как я понял, то
Код: plaintext
на событие form2.OnShow(или OnActivate, где уж сработает) ..... напиши проверку условия, е если все ок, то close
...
Рейтинг: 0 / 0
10.12.2002, 18:31
    #32078139
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
2 tygra
Не поверишь, но я так пробовал - не работает, поэтому и спрашиваю.
...
Рейтинг: 0 / 0
10.12.2002, 18:33
    #32078141
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
> tygra
прога автоматом закрывается и удаляет все формы если удаляется главная форма.
...
Рейтинг: 0 / 0
10.12.2002, 18:44
    #32078155
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Прогу то закрыть на проблема - нужно форму, которая модально вызывается

Тогда делай по-другому: напиши в форме процедуру (или функцию), которая сначала будет проверять условие и если оно не выполняется - тогда показывать форму. Типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public
 function ShowForm(..какие параметры нужны если..): boolean;
........

function Form2.ShowForm(...): boolean;
begin
 if условие выполнено then 
  Result := True;
 else Result := ShowModal = mrOk;
end

дергай так
.........
form2:=TForm2.Create(application) ;
form2.FormShow;
.......
...
Рейтинг: 0 / 0
10.12.2002, 18:53
    #32078166
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
> tygra
Я думал ему нужно Form1 скрыть во время показа Form2.
Хотя зачем сие надо - не врубаюсь )))
...
Рейтинг: 0 / 0
10.12.2002, 19:47
    #32078196
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Неа такой вариант не подходит.

Проверка должна осуществляться на форме, которую вызвали. Потому что каждую форму (а их 500) может вызывать около 20-30 форм. Получается надо искать все места вызовов и там вставлять проверку. Получится 500*20(30)=10000-15000проверок. Это напряжно. А если повесить проверку на форму, которая вызывается(на все), то не зависимо от того кто ее вызвал проверка осущ на форме которую вызвали,т.е. 500*1=500 проверок.
Т.е. как-тока форма захочет родиться надо проверять а может ли она это сделать.
Тока не знаю как это сделать. Пробовал вешать на Oncreate, Onactivate, Onshow - не получается
...
Рейтинг: 0 / 0
11.12.2002, 08:23
    #32078248
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Надо вешать проверку на OnPaint - все будет работать.
...
Рейтинг: 0 / 0
11.12.2002, 09:28
    #32078268
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Добро утро
2 eNose
Это тоже не очень хорошо. Потому как эта проверка предусматривает запрос к SQL Server и будет напряжно, если при каждой перерисовке будет бесполезный запрос. Хотя можно после первого ONPAINT сигнальной переменной присвоить значение true, а при перерисовке проверять это значение и соответственно либо делать проверку либо нет. Но это как-то извращенно получается.
Если других идей никто не подкинет буду делать так.
Спасибо
...
Рейтинг: 0 / 0
11.12.2002, 11:51
    #32078365
guest2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
У вызываемой формы сделай public-функцию проверки условия.

TForm2 = class
...
public
CheckSomeStuff: Boolean;
...

И пиши так:

form2:=TForm2.Create(application) ;
if form2.CheckSomeStuff then
form2.ShowModal
else
form2.Destroy;
...
Рейтинг: 0 / 0
11.12.2002, 12:03
    #32078376
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
> Cooper
Пожста опиши че те надо - че ты хошь?
Тут уже двестимиллиардов советов надавали ))))
...
Рейтинг: 0 / 0
11.12.2002, 14:09
    #32078485
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
2 guest2002
Спасибо конечно, но это не подходит.

Я же писал, что не хоца искать все места вызова форм и вставлять туда проверку, и в зависимости от проверки либо showmodal либо нет. А хоца вызывать формы, а они уж сами решают показываться им или нет, т.е. один раз впихнуть в каждую форму проверку и если ее пытаются вызвать, то она проверяет сама условие, и т.д.
...
Рейтинг: 0 / 0
11.12.2002, 14:22
    #32078493
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
2Cooper
Самое простое решение (его мы и используем) -
формы никогда не вызываются напрямую через Show или
ShowModal, а везде - через процедуру FormShow.

В ней и лепи, чо хочешь
...
Рейтинг: 0 / 0
11.12.2002, 14:25
    #32078495
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
2 dkstranger
А как?
Кинь примерчик, а то уже ниче не соображаю.
...
Рейтинг: 0 / 0
11.12.2002, 14:26
    #32078497
&Alexis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create(aOwner: TComponent); reintroduce; virtual;
end;
...........

constructor TForm2.Create(aOwner: TComponent);
begin
if True{твое условие} then raise Exception.Create('Нет возможности работать');
end;

Вызов формы2 из формы 1
procedure TForm1.Button1Click(Sender: TObject);
begin
try
form2 := TForm2.Create(Self);
form2.SHowModal;
except
on E: Exception do ShowMessage(E.Message);
end;
end;
...
Рейтинг: 0 / 0
11.12.2002, 14:29
    #32078499
&Alexis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Поправляю:

constructor TForm2.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
if True then raise Exception.Create('Нет возможности работать');
// или тут inherited Create(aOwner);
end;
...
Рейтинг: 0 / 0
11.12.2002, 14:32
    #32078500
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
TF = class(TForm)
private
flg_mod:boolean;
flg_show:boolean;
public
property FlagModal:boolean read flg_mod write flg_mod;
property FlagShow:boolean read flg_show write flg_show;
procedure FormShow;
end;


procedure TF.FormShow;
begin
if FormShow then begin
if FlagModal then begin
ShowModal;
end else begin
Show;
end;
end else begin
// делай, что тебе нужно и не показывай форму...
end;
end;
...
Рейтинг: 0 / 0
11.12.2002, 14:36
    #32078505
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
Тока не куда не уходите! Ща буду пробовать. Нутром чую сразу не получится!
...
Рейтинг: 0 / 0
11.12.2002, 14:44
    #32078513
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть форму сразу же после создания
2 &Alexis
СПАСИБО!!!
После двухдневных мучений наконец-то заработало!!! Тока не совсем понял как работает. А если у меня в form2.create() есть код, касяков не будет?

2 dkstranger
Пока не пробовал, но за помощь отдельное СПА!!!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как закрыть форму сразу же после создания / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]