Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать,чтоб форма не показывалась? [D6, XP]


Страницы:   1 2

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()


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо