![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать,чтоб форма не показывалась? [D6, XP]
Abcdef123 © (2009-06-02 06:36:00)Здравствуйте, Мастера.
Извините за примитивный вопрос.
Пишу небольшой проект, всего одна форма (автоматически создаваемая, она же объявдена как главная).
Цель этого проекта - создать кое-какой датасет и потом передать этот датасет в другую ВНЕШНЮЮ программу.
Так вот надо чтоб мой маленький проект работал в двух режимах. В зависимости от параметров вызова, форма будет показываться или не будет. Если будет - тут нет проблем. А вот если не надо показывать, то создаем датасет на основе переданных параметров и сразу вызываем внешнюю программу. При закрытии внешней программы сразу надо чтоб и мой проект закрывался. И это происходит. Но, форма проекта все-равно мельком показывается при закрытии. Хоть это и не надолго, но не красиво все равно. Можно как то этого избежать?
Для информации...на FormShow у меня так:
if ParamStr(3) = '' then //надо показать форму
SetScreenDefaults
else //не надо показывать форму
begin
MainForm.OnShow := nil; //пробовала так
ShowWindow(FRM_MainForm.Handle,SW_HIDE);//или так
Botton1.Click; //здесь вызывается внешняя программа
Close; //здесь форму закрываем, и она мелькает один раз при закрытии
end;
Abcdef123 (2009-06-03 12:13:00) [21]To {RASkov} [11]
А что происходит у вас после выполнения Application.Run; ?
У меня ничего не происходит, просто "висит", а мне ж надо, чтоб закончилось выполнение этой программы.
Я всем благодарна за комментарии насчет обработки без использования контролов, учту на будущее. Просто в данной ситуации давайте исходить из того что есть. В общем, если я прописываю, как сказал {RASkov}, то на этапе создания формы в процедуре FormCreate
1. проводим обработку
2. Вызываем внешнюю программу
3. После закрытия внешней программы выполняем Close; (закрываем форму).
Так вот как раз после закрытия формы у меня наступает выполнение строки dpr Application.Run; вот тут и сидит :-( Что не так?
Плохиш (2009-06-03 11:46:00) [22]
> Abcdef123 (03.06.09 11:11) [12]
Наймите программиста.
Palladin (2009-06-03 11:14:00) [23]
> пыдает ошибку runtime error при выполнении программы
больно слышать (С) ИШ
Abcdef123 (2009-06-03 11:11:00) [24]To Плохиш [10]
[1] не помогло, пыдает ошибку runtime error при выполнении программы :-(
{RASkov} (2009-06-03 10:56:00) [25]> [8] Abcdef123 (03.06.09 10:14)
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.ShowMainForm:=False;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Ничего не моргает....
Но всеж действительно контролы не для хранения параметров, а для их отображения....
Плохиш (2009-06-03 10:31:00) [26]
> Abcdef123 (03.06.09 10:14) [8]
Попытка приделать костыль...
PS. Неужели [1] так и не помогло? Стоит обдумать вопрос о найме программиста.
Dennis I. Komarov (2009-06-03 10:26:00) [27]
> Abcdef123 (03.06.09 10:14) [8]
У тебя не правильная программа. Параметры не должны хранится в форме и контролах на ней. Они предназначены для отображения и изменения параметров, но не для хранения... Если тебя устраивает такая не правильная программа, то пусть себе мигает.
Abcdef123 (2009-06-03 10:14:00) [28]To Palladin [6]
Не могу убрать, все данные завязаны на компонетны этой формы, такие как радиобоксы, листбоксы - данные в них загружаются из переданных параметров ИЛИ загружены в зависимости от ручного выбора критериев пользователем. И на основаннии того, какие данные определилсь в этих компонентах формы- от этого зависит формирование параметров во внешнюю программу.
Поскольку вручную польвователем процесс отработан, работает хорошо, то уже нет смысла разделять вообще функциональность всей обработки и прописывать все заново второй вариант только оттого, что форму показывать не надо.
Я надеюсь, что можно обойтись как то проще. То есть вопрос все еще остается прежним как избежать мелькания формы? :-\
Dennis I. Komarov (2009-06-03 09:53:00) [29]
> то есть процесс в обеих случаях должен быть одинаков для
> формирования параметров внешней программы. Вот разница только
> в одном - показ или непоказ формы.
т.е. без формы ты ничего обрабатывать не можешь?
Palladin (2009-06-03 09:18:00) [30]
> На форме происходят обработки параметнов проекта
Ну так убери эту обработку параметнов из методов формы и следуй [2]
Abcdef123 (2009-06-03 08:53:00) [31]To Dennis I. Komarov [2]
На форме происходят обработки параметнов проекта - которые потом передаются во внешний проект. И поскольку, мой проект должен работать в 2= режимах, давать пользователю на форме выбрать критерии и запустить обтаботку (в этом случае форму показываю), а иногда сами параметры передаю программе и обработку как бы симулирую, то есть процесс в обеих случаях должен быть одинаков для формирования параметров внешней программы. Вот разница только в одном - показ или непоказ формы.
To clickmaker [3]
это не подойдет по причине описанной to [2]
oldman (2009-06-02 11:14:00) [32]
> При закрытии внешней программы сразу надо чтоб и мой проект
> закрывался. И это происходит. Но, форма проекта все-равно
> мельком показывается при закрытии. Хоть это и не надолго,
> но не красиво все равно.
Напиши на форме красиво "Щас выполню работу и закроюсь" и sleep секунд на 5.
clickmaker (2009-06-02 11:07:00) [33]в dpr
if ParamStr(3) = '' then
Application.CreateForm(TMyMainForm, MyMainForm);
Dennis I. Komarov (2009-06-02 09:22:00) [34]А зачем создавать форму, если она не нужна?
qwerty321 (2009-06-02 08:31:00) [35]F1 Application.ShowMainForm()