Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизКак запустить приложение свернутым? Найти похожие ветки
← →
Islander (2004-09-29 10:54) [0]Здравствуйте!
Никак не могу разработать нормальный способ, как запустить приложение на Delphi в свернутом виде, вот какие варианты перепробовал:
1) В FormCreate делаю Application.Minimize. Сворачивается и начинает мигать кнопкой на таскбаре (как будто FlashWindow), что не устраивает.
2) Делаю дополнительный таймер, ставлю interval = 100 мс (меньше нельзя), в OnTimer пишу Application Minimize, тогда все нормально, но форма сначала показывается на экране, а потом сворачивается, что вызывает "мигание". Это раздражает многих пользователей.
3) Есть еще один вариант: в OnCreate прописать WindowState = wsMinimized. Тогда все хорошо, но вот окно показывается не кнокой на таскбаре, а свернутой полоской в левой нижней части экрана.
В итоге, все 3 способа не подходят, поэтому вопрос к здесь присутствующим: а как Вы решаете подобную задачу?
← →
b@mboZe (2004-09-29 11:06) [1]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) [2]А если в настройках ярлыка указать?
← →
TUser © (2004-09-29 12:45) [3]
> 3) Есть еще один вариант: в OnCreate прописать WindowState
> = wsMinimized. Тогда все хорошо, но вот окно показывается
> не кнокой на таскбаре, а свернутой полоской в левой нижней
> части экрана.
В OnCreate главной формы приложения надо.
← →
Islander (2004-09-29 13:23) [4]2b@mboZe:
Спасибо за вариант, буду дома, попробую
2clickmaker:
Не пойдет, это несерьезно, т.к. иногда надо приложение все-таки развернутым запускать, в зависимости от пользовательских настроек.
2TUser:
Так я и прописываю в OnCreate главной формы.
← →
TUser © (2004-09-29 14:39) [5]Просто, свернутая полоска в левой нижней части обычно бывает при минимизации не-главной формы. Проверь, точно ли она у тебя главная - Project -> View source
← →
Islander (2004-09-29 20:05) [6]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;
Таким образом показывается форма авторизации, которую и надо свернуть. В это время, как видно из кода, главная форма еще не создана....
← →
panov © (2004-09-29 21:01) [7]А для чего показывать форму для авторизации в свернутом виде?
Или я чего-то не понимаю, но запрос на авторизацию выдается для того, чтобы ввести имя и пароль.
← →
Islander (2004-09-29 22:14) [8]2Panov:
Допустим, это органайзер с паролем, который запускается при загрузке Windows. Пользователям не всегда хочется каждый раз водить пароль при запуске. Пользователи хотят ввести пароль тогда, когда в этом возникнет необходимость.
P.S. Предложения не запускать программу с Windows не подойдут :)
← →
panov © (2004-09-29 22:19) [9]>Islander (29.09.04 22:14) [8]
В этом случае спрячь программу вообще, а иконку помести в SysTray.
← →
default © (2004-09-29 22:21) [10]"Но ведь та форма, которая создана первой, является в данном случае главной, если других форм не создано, верно?"
та форма, которая создана первой, является главной
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:46) [11]>Islander (29.09.04 22:14) [8]
Ну для начала я бы поместил вызов функции ДОApplication.Initialize;
А выход из этой ситуации простой:
В зависимости от настроек пользователя изменяется позиция окна(если должно стартовать свернутое, то окно показывается за пределами экрана и минимизируется, при восстановлении - позиция настраивается как нужно); в противном случае пробюлем не возникает никаких.
← →
Islander (2004-09-29 23:54) [12]2Panov:
1) У пользователя есть варианты в настройках использовать трей или нет. Если использовать, то проблем нет. А вот если трей не использовать, то окно надо просто свернуть.
2) Поместил ДО Application.Initialize. Ничего не изменилось.
3) Насчет показа окна за пределами экрана - за это спасибо! То, что нужно!
2Default:
Кнопка на таскбаре в этом случае мигать начинает.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c