Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Вниз

Будете смеятся - вопрос про иконку в треее...   Найти похожие ветки 

 
Дремучий   (2003-03-14 11:41) [0]

собственно, с ней все нормально... сидит в трее она нормально.
НО, я хочу к тому ж убрать прогу из панели задач. Убирается, но глючит. Когда прога запускается - на секунду(еле заметно) мелькает в таскбаре. При щелчке на иконке в трее - показ окна проги - тоже самое мерцание, при минимизации - тоже самое...

Не критично, но хочется, чтоб таки красиво было.
Использую такой код

procedure TdmMain.MyWindowRestore;
begin
Application.Restore;
Application.BringToFront;
end;


procedure TdmMain.AppEventsRestore(Sender: TObject);
begin
{$IFDEF WIN32}
if NewStyleControls then ShowWindow(Application.Handle, SW_HIDE);
//if NewStyleControls then ShowWindow(Application.Handle, SW_SHOW);
{$ENDIF}
end;

procedure TdmMain.AppEventsMinimize(Sender: TObject);
begin
{$IFDEF WIN32}
if NewStyleControls then ShowWindow(Application.Handle, SW_HIDE);
{$ENDIF}
end;

procedure TdmMain.TrayIconDblClick(Sender: TObject);
begin
MyWindowRestore;
end;


чего ей еще подсобачить, чтоб в таскбаре не мелькала?


 
Smithson   (2003-03-14 11:49) [1]

Дарю.

(**********************************************************************)
procedure HideApp(AHide: Boolean);
var I: DWord;
Begin
I := GetWindowLong(Application.Handle, GWL_EXSTYLE);
if AHide then begin
ShowWindow(Application.Handle, SW_HIDE);
Application.MainForm.Hide;
Application.Minimize;
iAppDefEXSTYLE := I;
I := I and (not WS_EX_APPWINDOW);
I := I or WS_EX_TOOLWINDOW;
end
else begin
ShowWindow(Application.Handle, SW_Show);
if iAppDefEXSTYLE > 0 then I := iAppDefEXSTYLE
else begin
I := I and (not WS_EX_TOOLWINDOW);
I := I or WS_EX_APPWINDOW;
end;
end;
SetWindowLong(Application.Handle, GWL_EXSTYLE, I);
if not AHide then begin
Application.Restore;
Application.MainForm.Show;
Application.MainForm.WindowState := wsNormal;
Application.BringToFront;
end;
End;



 
Дремучий   (2003-03-14 12:42) [2]

пасиб, интересная процедурка, НО...

стартовые свойства формы
-невидимая
-минимизированная

Application.Initialize;
HideApp(true);
Application.CreateForm(TdmMain, dmMain);
Application.CreateForm(TfmMain, fmMain);
Application.Run;


так экзепшен.... и я с ним согласен...



Application.Initialize;
Application.CreateForm(TdmMain, dmMain);
Application.CreateForm(TfmMain, fmMain);//майнформ
HideApp(true);
Application.Run;


так не глючит, но при запуске прога видна пару секунд в таскбаре
после этого...
1)востанавливается так как надо(в таскбаре не видно) !!!
2)минимизируется специфино(анимация - прячется под кнопку Старт), мне этого не нужно... Думаю это "эффект" тоже можно убрать, но как?


 
nikkie   (2003-03-14 14:10) [3]

а как на счет TApplication.ShowMainForm?


 
LongIsland   (2003-03-14 14:24) [4]

var
WnHnd : Integer;

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);

WnHnd := GetWindowLong(Application.Handle, GWL_EXSTYLE);
if (WnHnd and WS_EX_TOOLWINDOW) = WS_EX_TOOLWINDOW then
WnHnd := WnHnd - WS_EX_TOOLWINDOW
else
WnHnd := WnHnd or WS_EX_TOOLWINDOW;
Application.MainForm.Hide;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WnHnd);
Application.MainForm.Show;

Application.Run;
end.


А так все еще висит?


 
Дремучий   (2003-03-14 15:39) [5]


> nikkie © (14.03.03 14:10)

Application.MainForm.Hide;
Application.Run;

мерцает...



> LongIsland © (14.03.03 14:24

переставив SetWindowLong и MainForm.Hide местами...
не мерцает, но минимизируется с анимацией, что не есть нужным

SetWindowLong(Application.Handle, GWL_EXSTYLE, WnHnd);
Application.MainForm.Hide;


как убрать анимацию минимизации?


 
LongIsland   (2003-03-14 15:43) [6]

Ой! Это оно и из трея убирает:-( Забыл совсем, придется доработать


 
nikkie   (2003-03-14 15:58) [7]

я настырничать не буду, но все же перечитай мой пост.


 
LongIsland   (2003-03-14 16:07) [8]

Кстати, о птичках. Посмотрел, как минимизируется WinCmd, так тоже с анимацией


 
Smithson   (2003-03-14 16:13) [9]

Мне кажется, что анимация чего бы то ни было - свойства системы.


 
Дремучий   (2003-03-14 16:13) [10]


> nikkie © (14.03.03 15:58)
> я настырничать не буду, но все же перечитай мой пост.

так я пробовал....
Дремучий © (14.03.03 15:39

также втыкал Application.MainForm.Hide; сюда...

procedure TdmMain.AppEventsMinimize(Sender: TObject);
begin
{$IFDEF WIN32}
if NewStyleControls then ShowWindow(Application.Handle, SW_HIDE);
Application.MainForm.Hide;
{$ENDIF}
end;

все равно на какое-то время в таскбаре появляется "окошко" проги


 
Дремучий   (2003-03-14 16:16) [11]


> LongIsland © (14.03.03 16:07)
> Кстати, о птичках. Посмотрел, как минимизируется WinCmd,
> так тоже с анимацией

аську (2002а) посмотри - без анимаци... :P


 
Юрий Зотов   (2003-03-14 17:25) [12]

Что ж так мучаться-то...

Выкиньте все эти извраты на помойку, оставьте стандартный DPR, а в OnCreate главной формы напишите всего 1 строку от nikkie. Там же сажайте в трэй иконку. И все.


 
Дремучий   (2003-03-14 20:04) [13]


> Юрий Зотов © (14.03.03 17:25)
Выкиньте все эти извраты на помойку,

закоментирвал, авось выбрасывать еще рано...


оставьте стандартный
> DPR, а в OnCreate главной формы напишите всего 1 строку
> от nikkie. Там же сажайте в трэй иконку. И все.

строчка от nikkie - Application.MainForm.Hide;
как с боротся с экзепшеном?

> Юрий Зотов ©
и как ОнКриэйт будет влиять на минимизацию?

Application.MainForm.Hide; в procedure TdmMain.AppEventsMinimize(Sender: TObject); к нужному эффекту не приводит. Вы или неправильно поняли проблему или поспешили с ответом




 
Юрий Зотов   (2003-03-14 21:42) [14]

> Дремучий © (14.03.03 20:04)
> строчка от nikkie - Application.MainForm.Hide;
> как с боротся с экзепшеном?


А если быть повнимательнее, то строчка от nikkie такая: TApplication. Show MainForm

А если еще нажать F1, то получится такая строчка:
Application.ShowMainForm := False;

И ни с чем не надо бороться. Кроме собственной невнимательности и торопливости.


> Вы или неправильно поняли проблему или поспешили с ответом

Это вряд ли, как говорил тов. Сухов. Дело в том, что подобных примеров я в одном только этом форуме приводил уже, наверное, с десяток. И все проверенные, все работающие. Так что понять "проблему" в очередной раз очень, знаете ли, несложно.

Формы трэй-приложений вовсе не минимизируются/восстанавливаются, а просто прячутся/показываются. Можно, конечно, навертеть и анимацию, и вообще что угодно, но этот путь самый простой и самый распространенный. Для его реализации пишется та самая строчка, обработчик WM_SYSCOMMAND и собственно обработчик сообщения от иконки. Вот и вся "проблема".

Загляните сюда:
http://www.delphikingdom.com/helloworld/samples_win.htm#link11
Там пример трехлетней давности. Не идеальный, но работающий.


 
Дремучий   (2003-03-14 22:22) [15]

сижу и чешу бошку....
как я три раза "перечитав" сообщение nikkie
вместо Application.ShowMainForm увидел Application.MainForm.Hide
8-o

вывод - надо чаще пользоваться буфером обмена, он читает внимательнее %))


Формы трэй-приложений вовсе не минимизируются/восстанавливаются, а просто прячутся/показываются. этот путь самый простой и самый распространенный. Для его реализации пишется та самая строчка, обработчик WM_SYSCOMMAND и собственно обработчик сообщения от иконки.
действительно то решение, что я искал

спасибо всем... Вы рулез!
моя "невнимательность" мастдай!
%))





Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
8-88078
Yasha
2002-12-19 18:04
2003.03.27
печать графики


3-87847
Zelius
2003-03-10 18:41
2003.03.27
Помогите с SQL запросом!


1-87980
vanek8
2003-03-18 07:59
2003.03.27
Отчеты


3-87821
DenKop
2003-03-08 15:43
2003.03.27
Основы InterBase


3-87807
brestmarket
2003-03-08 03:43
2003.03.27
С какими параметрами необходимо создать(осуществлять доступ) к





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский