![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить приложение свернутым? [D7, WinXP]
Islander © (2004-09-29 10:54:00)Здравствуйте!
Никак не могу разработать нормальный способ, как запустить приложение на Delphi в свернутом виде, вот какие варианты перепробовал:
1) В FormCreate делаю Application.Minimize. Сворачивается и начинает мигать кнопкой на таскбаре (как будто FlashWindow), что не устраивает.
2) Делаю дополнительный таймер, ставлю interval = 100 мс (меньше нельзя), в OnTimer пишу Application Minimize, тогда все нормально, но форма сначала показывается на экране, а потом сворачивается, что вызывает "мигание". Это раздражает многих пользователей.
3) Есть еще один вариант: в OnCreate прописать WindowState = wsMinimized. Тогда все хорошо, но вот окно показывается не кнокой на таскбаре, а свернутой полоской в левой нижней части экрана.
В итоге, все 3 способа не подходят, поэтому вопрос к здесь присутствующим: а как Вы решаете подобную задачу?
Islander (2004-09-29 23:54:00) [1]2Panov:
1) У пользователя есть варианты в настройках использовать трей или нет. Если использовать, то проблем нет. А вот если трей не использовать, то окно надо просто свернуть.
2) Поместил ДО Application.Initialize. Ничего не изменилось.
3) Насчет показа окна за пределами экрана - за это спасибо! То, что нужно!
2Default:
Кнопка на таскбаре в этом случае мигать начинает.
panov (2004-09-29 22:46:00) [2]>Islander (29.09.04 22:14) [8]
Ну для начала я бы поместил вызов функции ДОApplication.Initialize;
А выход из этой ситуации простой:
В зависимости от настроек пользователя изменяется позиция окна(если должно стартовать свернутое, то окно показывается за пределами экрана и минимизируется, при восстановлении - позиция настраивается как нужно); в противном случае пробюлем не возникает никаких.
default (2004-09-29 22:21:00) [3]"Но ведь та форма, которая создана первой, является в данном случае главной, если других форм не создано, верно?"
та форма, которая создана первой, является главной
project.dpr:
begin
if not ShowLoginDialog then
exit;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
Application.ProcessMessages;
end.
ShowLoginDialog - это функция такого вида:
Function ShowLoginDialog: boolean; overLoad;
begin
Application.Minimize;
Application.CreateForm(TfrmLogin, frmLogin);
Result:=frmLogin.ShowModal = mrOK;
end;
так покатит?если нет тогда точней поясни что нужно
panov (2004-09-29 22:19:00) [4]>Islander (29.09.04 22:14) [8]
В этом случае спрячь программу вообще, а иконку помести в SysTray.
Islander (2004-09-29 22:14:00) [5]2Panov:
Допустим, это органайзер с паролем, который запускается при загрузке Windows. Пользователям не всегда хочется каждый раз водить пароль при запуске. Пользователи хотят ввести пароль тогда, когда в этом возникнет необходимость.
P.S. Предложения не запускать программу с Windows не подойдут :)
panov (2004-09-29 21:01:00) [6]А для чего показывать форму для авторизации в свернутом виде?
Или я чего-то не понимаю, но запрос на авторизацию выдается для того, чтобы ввести имя и пароль.
Islander (2004-09-29 20:05:00) [7]2TUser
Я все формы создаю динамически кроме главной. Но ведь та форма, которая создана первой, является в данном случае главной, если других форм не создано, верно?
Я делаю примерно так:
project.dpr:
begin
if not ShowLoginDialog then
exit;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
Application.ProcessMessages;
end.
ShowLoginDialog - это функция такого вида:
Function ShowLoginDialog: boolean; overLoad;
begin
Application.CreateForm(TfrmLogin, frmLogin);
Result:=frmLogin.ShowModal = mrOK;
end;
Таким образом показывается форма авторизации, которую и надо свернуть. В это время, как видно из кода, главная форма еще не создана....
TUser (2004-09-29 14:39:00) [8]Просто, свернутая полоска в левой нижней части обычно бывает при минимизации не-главной формы. Проверь, точно ли она у тебя главная - Project -> View source
Islander (2004-09-29 13:23:00) [9]2b@mboZe:
Спасибо за вариант, буду дома, попробую
2clickmaker:
Не пойдет, это несерьезно, т.к. иногда надо приложение все-таки развернутым запускать, в зависимости от пользовательских настроек.
2TUser:
Так я и прописываю в OnCreate главной формы.
TUser (2004-09-29 12:45:00) [10]
> 3) Есть еще один вариант: в OnCreate прописать WindowState
> = wsMinimized. Тогда все хорошо, но вот окно показывается
> не кнокой на таскбаре, а свернутой полоской в левой нижней
> части экрана.
В OnCreate главной формы приложения надо.
b@mboZe (2004-09-29 11:06:00) [11]procedure TForm1.FormCreate(Sender: TObject);
begin
bCreationFinished := false;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if not bCreationFinished then
begin
bCreationFinished := true;
Application.Minimize;
end;
end;
clickmaker (2004-09-29 11:06:00) [12]А если в настройках ярлыка указать?