Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.051 c
14-1096280445
Игорь Шевченко
2004-09-27 14:20
2004.10.17
Есть ли в природе книги по теории программирования ?


14-1096029033
квакер
2004-09-24 16:30
2004.10.17
Команда в кваке


3-1095619456
Igor_P
2004-09-19 22:44
2004.10.17
Создание SQL-запроса


14-1096269662
Layner
2004-09-27 11:21
2004.10.17
Американская винда не правильно определяет кол-во


14-1096098421
Zlo_van
2004-09-25 11:47
2004.10.17
Немного информации о Делфи 9





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский