Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > скрыть прогу в баре


Автор: BLACK_KOT 26.11.2007, 00:36
всё впринципе просто:
Код

procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_HIDE);
end;


но в первую секунду после запуска прога таки появляется в баре! вернее начинает появляться и исчезает- а это портит всё впечатление. как исключить эту недоработку?

пробовал закинкть код в собитие TForm1.FormCreate но тогда код ваабще не фурычит.

Автор: Rohoss 26.11.2007, 07:17
Application.ShowMainForm:=false ;

Автор: BLACK_KOT 26.11.2007, 10:26
 и с чем это едят?

в какое собитие  вставлять этот код? oncreate, onshow вставлял - не катит. 

ПРИВЕДИТЕ ПРИМЕР, ЁПТЬ!!

Автор: THandle 26.11.2007, 11:34
В TForm1.OnCreate Поставить 

Код

  SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);



ЗЫ: За последние два месяца я на этом форуме 3 раз отвечаю на такой вопрос smile 

Автор: Rohoss 26.11.2007, 12:25
Цитата(BLACK_KOT @  26.11.2007,  10:26 Найти цитируемый пост)
и с чем это едят?


Тут нужно в файл Project1.dpr вставить, примерно так
Код

program Project1;

uses
  Forms,
  FSGraber in 'Project1.pas' {Form1};

{$R *.res}

begin
 Application.Initialize;

  Application.CreateForm(TForm1, Form1);
  Application.ShowMainForm:=false ;
  Application.Run;
end.


Автор: Snowy 26.11.2007, 12:27
Цитата(Rohoss @  26.11.2007,  07:17 Найти цитируемый пост)
Application.ShowMainForm:=false ;
Примечание:
Это решение для Delphi 2007.
Остальные варианты - для более ранних версий дельфи.

Автор: maxim1000 26.11.2007, 13:21
хм... а зачем тогда вообще форма?

Автор: Alexeis 26.11.2007, 13:42
Цитата(maxim1000 @  26.11.2007,  13:21 Найти цитируемый пост)
хм... а зачем тогда вообще форма?

  Так форма видна на экране, ее нет только на панели задач.

Автор: maxim1000 26.11.2007, 16:24
Цитата(Alexeis @  26.11.2007,  13:42 Найти цитируемый пост)
Так форма видна на экране, ее нет только на панели задач.

хм... я просто исходил из

Цитата(BLACK_KOT @  26.11.2007,  00:36 Найти цитируемый пост)
ShowWindow(Application.Handle,SW_HIDE);

насколько я понимаю, это должно убрать форму не только из панели задач, но и с экрана
а т.к. проблема с этим способом только в том, что
Цитата(BLACK_KOT @  26.11.2007,  00:36 Найти цитируемый пост)
но в первую секунду после запуска прога таки появляется в баре! вернее начинает появляться и исчезает- а это портит всё впечатление. как исключить эту недоработку?

то я и подумал, что форму и не надо показывать...

Автор: Snowy 26.11.2007, 16:30
Цитата(maxim1000 @  26.11.2007,  16:24 Найти цитируемый пост)
насколько я понимаю, это должно убрать форму не только из панели задач, но и с экрана
Нет. Hide выполняется к Application, а не к форме.
Если ты не в курсе, то Application в Delphi до 2007 является самостоятельным окном, размером в 0 пикселей.
Поэтому, как минус, по правому клику нет пунктов размер, развернуть и т.п., т.к. окно приложения не может менять размеры.
А в Delphi 2007 наконец-то от этого ушли, и роль приложения теперь выполняет главная форма.
Отсюда и разница в подходе.
В D2007 мы просто говорим не показывать. А для более ранних версий приходится применять WinAPI методы к окну приложения.

Автор: maxim1000 26.11.2007, 17:57
хм... не знал...

Автор: BLACK_KOT 26.11.2007, 23:38
THandle  благодарю! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)