powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как закрыть форму сразу же после создания
21 сообщений из 21, страница 1 из 1
Как закрыть форму сразу же после создания
    #32078018
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Форма1 вызывает форму2

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

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

Если нужно модальную форму закрыть, как я понял, то
Код: plaintext
на событие form2.OnShow(или OnActivate, где уж сработает) ..... напиши проверку условия, е если все ок, то close
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #32078139
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tygra
Не поверишь, но я так пробовал - не работает, поэтому и спрашиваю.
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #32078141
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> tygra
прога автоматом закрывается и удаляет все формы если удаляется главная форма.
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #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
Как закрыть форму сразу же после создания
    #32078166
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> tygra
Я думал ему нужно Form1 скрыть во время показа Form2.
Хотя зачем сие надо - не врубаюсь )))
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #32078196
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неа такой вариант не подходит.

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

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

И пиши так:

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

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

В ней и лепи, чо хочешь
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #32078495
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 dkstranger
А как?
Кинь примерчик, а то уже ниче не соображаю.
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #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
Как закрыть форму сразу же после создания
    #32078499
&Alexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправляю:

constructor TForm2.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
if True then raise Exception.Create('Нет возможности работать');
// или тут inherited Create(aOwner);
end;
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #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
Как закрыть форму сразу же после создания
    #32078505
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тока не куда не уходите! Ща буду пробовать. Нутром чую сразу не получится!
...
Рейтинг: 0 / 0
Как закрыть форму сразу же после создания
    #32078513
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 &Alexis
СПАСИБО!!!
После двухдневных мучений наконец-то заработало!!! Тока не совсем понял как работает. А если у меня в form2.create() есть код, касяков не будет?

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


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