|
MaCroSs 2 / 2 / 0 Регистрация: 10.04.2012 Сообщений: 18 |
||||
|
1 |
||||
|
22.04.2012, 23:06. Показов 16659. Ответов 14 Метки нет (Все метки)
__________________
0 |
|
0 / 0 / 0 Регистрация: 22.03.2012 Сообщений: 5 |
|
|
22.04.2012, 23:28 |
2 |
|
MaCroSs, хм забыл кое что вставить
0 |
|
10229 / 6607 / 498 Регистрация: 28.12.2010 Сообщений: 21,159 Записей в блоге: 1 |
|
|
23.04.2012, 00:03 |
3 |
|
Application.MainFormOnTaskbar := True; Тут ошибка False не помог в вашей версии Delphi нет этого свойства в Application, просто заремьте.
0 |
|
54 / 54 / 4 Регистрация: 15.12.2010 Сообщений: 260 |
|
|
25.04.2012, 10:27 |
4 |
|
Что это? «Это» — код тупо скопированный из старшей версии делфей в младшую.
0 |
|
0 / 0 / 1 Регистрация: 29.01.2013 Сообщений: 81 |
|
|
23.03.2013, 15:51 |
5 |
|
а что можна зделать в таком случае?
0 |
|
324 / 316 / 84 Регистрация: 03.03.2010 Сообщений: 1,364 |
|
|
23.03.2013, 16:25 |
6 |
|
а что можна зделать в таком случае? за комментировать или вообще удалить эту строку и будет тебе счастье
1 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
04.11.2013, 19:24 |
7 |
|
ладно, с этим все понятно. но объясните пожалуйста, что означает эта переменная? с ней, либо без нее приложение работает абсолютно одинаково.
0 |
|
120 / 110 / 19 Регистрация: 04.11.2013 Сообщений: 471 |
|
|
04.11.2013, 19:39 |
8 |
|
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
04.11.2013, 20:02 |
9 |
|
благодарю. MainFormOnTaskBar must be true to use Windows Vista Aero effects. These include live taskbar thumbnails, Dynamic Windows, Windows Flip, and Windows Flip 3D. Windows Flip 3D — это переключение окон по Win + Tab, так?
0 |
|
120 / 110 / 19 Регистрация: 04.11.2013 Сообщений: 471 |
|
|
04.11.2013, 20:06 |
10 |
|
Windows Flip 3D — это переключение окон по Win + Tab, так? Ага, оно самое.
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
04.11.2013, 20:12 |
11 |
|
в общем, я понял, что на обычных приложениях эта переменная особого значения не играет
0 |
|
Супер-модератор
32444 / 20939 / 8104 Регистрация: 22.10.2011 Сообщений: 36,202 Записей в блоге: 7 |
|
|
04.11.2013, 22:07 |
12 |
|
работает в обоих случаях. Ничего оно не работает. Если Application.Title был изменен (а это происходит очень часто), то без присвоения MainFormOnTaskbar в True окно не будет фигурировать в Flip3D. Да и live thumbnails начинают глючить.
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
05.11.2013, 10:31 |
13 |
|
без присвоения MainFormOnTaskbar в True окно не будет фигурировать в Flip3D со второго-третьего раза появляется. или если в рунтайме поменять Application.Title
0 |
|
Супер-модератор
32444 / 20939 / 8104 Регистрация: 22.10.2011 Сообщений: 36,202 Записей в блоге: 7 |
|
|
05.11.2013, 10:35 |
14 |
|
со второго-третьего раза появляется И это нормально? Должно появляться сразу. В общем ясно, ты сбил себе в голову, что оно тебе не надо, и теперь будешь находить оправдания этому. Ну, хочешь терять пользователей — не используй. Если я пользуюсь программой, а она не появляется во Flip 3D (или появляется с третьего/четвертого раза, потом на девятый — опять пропадает, и так далее), то программа становится не очень комфортной, и ей находится замена…
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
05.11.2013, 11:16 |
15 |
|
И это нормально? Должно появляться сразу. В общем ясно, ты сбил себе в голову, что оно тебе не надо, и теперь будешь находить оправдания этому. Ну, хочешь терять пользователей — не используй. Если я пользуюсь программой, а она не появляется во Flip 3D (или появляется с третьего/четвертого раза, потом на девятый — опять пропадает, и так далее), то программа становится не очень комфортной, и ей находится замена… ну зачем так строго? я же не отказываюсь от этого свойства
0 |
HI
I’m using Delphi 2007 and have set the MainFormOnTaskBar property to true.
The issue that I’m having is this.
If you open a child window from the main form and then you show a message dialog from the child window you just opened. When you close the message dialog and then close the child window, the main form will be sent to the back of any other application you have on the screen.
This happens under windows Vista and Windows 7. Does anyone know why this is happens and how can I fix it?
Francesca
21.4k4 gold badges49 silver badges88 bronze badges
asked Sep 22, 2010 at 22:55
I’ve fixed this in two ways.
Firstly by adding stdcall to the end of DoFindWindow in Forms.pas as described by Andreas Hausladen. This handles when a child form is hidden (CloseAction = caHide) instead of released when closing the form.
Secondly — copied the code from TCustomForm.CMShowingChanged that calls FindTopMostWindow and then activates the window that was returned into TCustomForm.CMRelease.
(Edit: code block needs to be indented by 4 spaces)
procedure TCustomForm.CMRelease;
var
NewActiveWindow: LongInt;
begin
if Application.MainFormOnTaskbar then
begin
NewActiveWindow := 0;
if (GetActiveWindow = Handle) and not IsIconic(Handle) then
begin
NewActiveWindow := FindTopMostWindow(Handle);
end;
if NewActiveWindow <> 0 then
begin
SetActiveWindow(NewActiveWindow);
end;
end;
Free;
end;
This seems to have done it, I’ll continue testing to make sure.
answered Sep 23, 2010 at 2:52
The PopupMode and PopupParent properties were added specifically to TForm to address this issue. Before showing the child form, set it’s PopupParent to the main form, and it’s PopupMode to pmAuto.
PopupParent specifically affects the Z-order of windows when other windows are shown.
The Delphi 2007 help has some documentation on these two properties, but you have to go through TForm to get to them. Use ‘TForm,Pop’ as your search topic (w/o the quotes, obviously ) to get there. The docs are a little confusing about PopupParent, because it discusses the effect that PopupMode has on the automatic assignment of PopupParent. A little experimentation after reading the docs should pay off, though.
answered Sep 23, 2010 at 15:44
Ken WhiteKen White
122k14 gold badges219 silver badges437 bronze badges
0
- Up to Parent: TApplication
Delphi
property MainFormOnTaskBar: Boolean read FMainFormOnTaskBar write SetMainFormOnTaskBar;
C++
__property bool MainFormOnTaskBar = {read=FMainFormOnTaskBar, write=SetMainFormOnTaskBar, nodefault};
Contents
- 1 Properties
- 2 Description
- 2.1 See Also
- 2.2 Code Examples
Properties
| Type | Visibility | Source | Unit | Parent |
|---|---|---|---|---|
| property | public |
Vcl.Forms.pas Vcl.Forms.hpp |
Vcl.Forms | TApplication |
Description
Controls how Windows taskbar buttons are handled in a VCL application.
If the MainFormOnTaskBar is True, a taskbar button represents the application’s main form and displays its caption. If False, a taskbar button represents the application’s (hidden) main window and bears the application’s Title.
MainFormOnTaskBar must be True to use Windows Vista or Windows 7 Aero effects, including live taskbar thumbnails, Dynamic Windows, Windows Flip, and Windows Flip 3D.
If a change to the default behavior is required, MainFormOnTaskBar should be set in the project source file after Application.Initialize and before the main form creation. The MainFormOnTaskBar setting is intended to persist for the life of the application; later run-time changes of this property could result in unexpected behavior.
MainFormOnTaskBar defaults to True for applications created in Delphi 2007 and later products, and to False for earlier products.
The MainFormOnTaskBar property can be applied to older applications. Note that it affects the Z-order of your MainForm in case your application depends on this.
To update existing VCL applications, add the following line to the project source file (example includes the application initialization line, which must precede the line that sets MainFormOnTaskBar):
Delphi:
Application.Initialize; ... Application.MainFormOnTaskbar := True;
C++:
Application->Initialize(); Application->MainFormOnTaskBar = true;
Note that the line is automatically added to new projects.
For further information, see http://www.microsoft.com/windows/products/windowsvista/features/experiences/aero.mspx.
See Also
- TApplication
Code Examples
- TAppCreateForm (Delphi)
- TAppCreateForm (C++)
|
Опции темы |
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Хочу спрятать окно в таскбаре (BC++ 2009). На шестерке все работало.
Почему не прячется окно в таскбаре? Это сообщение отредактировал(а) Alca — 12.1.2009, 15:35 ——————— C++ cross-platform library |
||
|
|||
| Rrader |
|
||||
|
Inspired =) Профиль Репутация: 13
|
Добавлено через 1 минуту
——————— Let’s do this quickly! |
||||
|
|||||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Спасибо то что надо, только при старте приложения все-равно видно форму в статус баре. ——————— C++ cross-platform library |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Может кто-то сталкивался с такими приколами? Это сообщение отредактировал(а) Alca — 16.1.2009, 10:32 ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
|
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Фонарь. НЕА. ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
Че появляется чтоли? |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Не пропадает. ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||||
трололомен Профиль
Репутация: 167
|
Очень странно.
скрывает все. Может у тебя что нибудь эдакое в конструкторе формы? |
||||
|
|||||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Все убрал с конструктора — тоже самое. Скинь пж тестовый проект, я гляну. ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
Держи Присоединённый файл ( Кол-во скачиваний: 10 ) |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Так форма спрятана же….. ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
А Семен Семеныч. Я тебя не правильно понял. Смотри так надо? Присоединённый файл ( Кол-во скачиваний: 19 ) |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Да так! ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
Кидаю исходник Присоединённый файл ( Кол-во скачиваний: 39 ) |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Там нема его ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
Ой не тот Присоединённый файл ( Кол-во скачиваний: 14 ) |
||
|
|||
| Alca |
|
||||
|
Эксперт Профиль Репутация: 25
|
mrbrooks, спасибо, то что доктор прописал!
Короче, я в шоке. Интересно борландцы сами додумались до такого Это сообщение отредактировал(а) Alca — 16.1.2009, 14:20 ——————— C++ cross-platform library |
||||
|
|||||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
такие неоднозначные подходы — это еще так детские шалости — по сравнению с другими косяками |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
P.S. Если на форме находяться какие-то контролы, то их не видно. Это сообщение отредактировал(а) Alca — 16.1.2009, 15:12 ——————— C++ cross-platform library |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
1 Это сообщение отредактировал(а) Alca — 16.1.2009, 18:28 ——————— C++ cross-platform library |
||
|
|||
| mrbrooks |
|
||||
трололомен Профиль
Репутация: 167
|
Да точно есть такой баг. Но я его поборол таким способом. В конструкторе формы:
|
||||
|
|||||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
хотя вот более кошерный способ — если компонентов много
|
||
|
|||
| Sharkfire |
|
||
|
Бывалый Профиль
Репутация: 2
|
Видать сами) Это сообщение отредактировал(а) Sharkfire — 1.2.2009, 17:53 |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
??? ——————— C++ cross-platform library |
||
|
|||
| Sharkfire |
|
||
|
Бывалый Профиль
Репутация: 2
|
Вообще столкнулся с той же проблемой. |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
я думаю надо копать исходники шестерки…. ——————— C++ cross-platform library |
||
|
|||
| A5uKa |
|
||
|
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Репутация: 2
|
Там очень хороший пример с «всё что надо от трея» лежит прямо в стандартных примерах. |
||
|
|||
| Alca |
|
||
|
Эксперт Профиль Репутация: 25
|
Как называеться? ——————— C++ cross-platform library |
||
|
|||
| A5uKa |
|
||
|
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Репутация: 2
|
D:CODE-GEARSourcesCPPAppsTrayIcon |
||
|
|||
| Superklug |
|
||
Бывалый Профиль Репутация: нет
|
Я тоже с этой проблемой столкулся… В 6-м билдере все прекрасно работало. Кто-нибудь нашел приемлемое решение для 2009-го? |
||
|
|||
| Sharkfire |
|
||
|
Бывалый Профиль
Репутация: 2
|
нет лично я не выкрутился! был ещё один какой то не испробованный способ на одном из форумов … там на 2 страницы винапишного кода…. У меня посто в программе главное окно убегает в трей и кнопка эта чёртова сама исчезает Добавлено через 1 минуту и 53 секунды |
||
|
|||
| mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
из _tWinMain вырезаем Application->MainFormOnTaskBar = true; в конструкторе формы вставляем Application->MainFormOnTaskBar = true; Добавлено через 50 секунд
ни чего подобного — в наличии. |
||
|
|||
| Superklug |
|
||
Бывалый Профиль Репутация: нет
|
mrbrooks, спасибо! На вид конечно очень странное решение, но оно работает.. Единственный недостаток: при сворачивании окна, анимация происходит в нижний-левый угол. Хотелось бы все таки в иконку трея… И еще теперь не приходит сообщение WM_SIZE при нажатии на кнопку «свернуть все»… Это сообщение отредактировал(а) Superklug — 2.6.2009, 14:21 |
||
|
|||
I built the code below using Delphi XE2. It creates Form1, and Form1 immediately creates an instance of Form2. When I press the button on Form2 a second Form2 is created.
Now if I hover the mouse over the button on this second, topmost, Form2 and wait for the tooltip to appear, the moment the tooltip appears, the first Form2 comes to the front, stealing focus.
The problem occurs only if Application.MainFormOnTaskbar is True. It also relies on the first Form2 being created from Form1’s FormCreate method. If I use PostMessage() to delay the creation of the first Form2 until the application has finished initialising, the problem goes away.
I’d like to understand why this is happening. I have already learned that Delphi’s Application object handles a lot of things including hint display, and I know that Delphi can recreate a window’s handle during initialisation, but I haven’t been able to follow this through to explain fully the behaviour described above (or indeed whether the above two facts are even relevant).
Project1.dpr
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True; // False makes problem go away
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Unit1.pas
unit Unit1;
interface
uses
Vcl.Forms, Unit2;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
procedure CreateForm2;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateForm2;
end;
procedure TForm1.CreateForm2;
var
frm : TForm2;
begin
frm := TForm2.Create(Application); // (Could pass Self - makes no difference)
frm.Show;
end;
end.
Unit2.pas
unit Unit2;
interface
uses
Vcl.Forms, System.Classes, Vcl.Controls, Vcl.StdCtrls, WinApi.Windows;
type
TForm2 = class(TForm)
Button1: TButton; // This button has a hint
procedure Button1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
uses
System.SysUtils, Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.CreateForm2;
end;
end.
I built the code below using Delphi XE2. It creates Form1, and Form1 immediately creates an instance of Form2. When I press the button on Form2 a second Form2 is created.
Now if I hover the mouse over the button on this second, topmost, Form2 and wait for the tooltip to appear, the moment the tooltip appears, the first Form2 comes to the front, stealing focus.
The problem occurs only if Application.MainFormOnTaskbar is True. It also relies on the first Form2 being created from Form1’s FormCreate method. If I use PostMessage() to delay the creation of the first Form2 until the application has finished initialising, the problem goes away.
I’d like to understand why this is happening. I have already learned that Delphi’s Application object handles a lot of things including hint display, and I know that Delphi can recreate a window’s handle during initialisation, but I haven’t been able to follow this through to explain fully the behaviour described above (or indeed whether the above two facts are even relevant).
Project1.dpr
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True; // False makes problem go away
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Unit1.pas
unit Unit1;
interface
uses
Vcl.Forms, Unit2;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
procedure CreateForm2;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateForm2;
end;
procedure TForm1.CreateForm2;
var
frm : TForm2;
begin
frm := TForm2.Create(Application); // (Could pass Self - makes no difference)
frm.Show;
end;
end.
Unit2.pas
unit Unit2;
interface
uses
Vcl.Forms, System.Classes, Vcl.Controls, Vcl.StdCtrls, WinApi.Windows;
type
TForm2 = class(TForm)
Button1: TButton; // This button has a hint
procedure Button1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
uses
System.SysUtils, Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.CreateForm2;
end;
end.
|
|
|
|

Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Соблюдайте общие правила форума
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
… (продолжение следует) …
Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки — бан.
Мат в разделе — бан на три месяца…
Полезные ссылки:
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы
Выразить свое отношение к модераторам раздела можно здесь:
Rouse_,
Krid

Как скрыть значок окна в TaskBar’e
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Доброго времени суток Собственно проблема в сабже Нужно чтобы сама форма была на экране, а зачка — небыло подскажите как быть пожалуйста Сообщение отредактировано: Krid — 05.04.10, 11:31 |
|
Gonarh |
|
|
ShowWindow(Application.Handle, SW_HIDE); |
|
CodeMonkey |
|
|
В Delphi 2010 по-умолчанию нет скрытого окна приложения (Application.Handle). Вместо него — главное окно. P.S. Поведение переключается MainFormOnTaskBar. |
|
Maksim V. |
|
|
Member
Рейтинг (т): 7 |
Ну можно выставить форме стиль WS_EX_TOOLWINDOW через SetWindowLong или через эту функцию подменить родительское окно или можно все это проделать через интерфейс ITaskBarList. |
|
poty |
|
|
Спасибо огромное! Сделал таки |
|
CodeMonkey |
|
|
Цитата Maksim V. @ 11.03.10, 12:03 Ну можно выставить форме стиль WS_EX_TOOLWINDOW через SetWindowLong Ну, сделать-то можно разными способами. Есть несколько правил, согласно которым приложения появляются на панели задач. Нарушьте любое условие и кнопка пропадёт. Весь вопрос в том, над чем это делать, а уж как именно делать — вопрос скорее вкуса. |
|
Алексей |
|
|
Senior Member
Рейтинг (т): 17 |
Цитата CodeMonkey @ 11.03.10, 10:32 Ставить MainFormOnTaskBar := False — плохая идея. это с чего это плохая идея? в связке с ShowWindow(Application.Handle, SW_HIDE); отлично работает Сообщение отредактировано: Алексей — 02.04.10, 07:50 |
|
CodeMonkey |
|
|
(вздох) Если что-то работает — это ещё не значит, что это правильно. |
|
Алексей |
|
|
Senior Member
Рейтинг (т): 17 |
лучше чем вздыхать, объяснили бы в чём подвох. форум для этого и существует. |
|
CodeMonkey |
|
|
Это было несложное упражнение на дом, но раз вам так лениво, то жмёте F1: Цитата The MainFormOnTaskBar property controls how Windows taskbar buttons are handled by VCL. If the property is true, a taskbar button represents the application’s main form and displays its caption. If false, a taskbar button represents the application’s (hidden) main window and bears the application’s Title. MainFormOnTaskBar must be true to use Windows Vista Aero effects. These include live taskbar thumbnails, Dynamic Windows, Windows Flip, and Windows Flip 3D. If a change to default behavior is required, MainFormOnTaskBar should be set in the .dpr file after Application.Initialize and before main form creation. The MainFormOnTaskBar setting is intended to persist for the life of the application; later runtime changes of this property could result in unexpected behavior. MainFormOnTaskBar defaults to True for applications created in Delphi 2007 and later products and False for earlier products. The property can be applied to older applications. Note that it affects the Z-order of your MainForm in case your application depends on this. To update existing VCL applications, add the following line to the project’s .dpr file after Application.Initialize;:
Application.MainFormOnTaskbar := True; This line is automatically added to new projects. For further information, see http://www.microsoft.com/windows/products/windowsvista/features/experiences/aero.mspx На случай, если вам лениво делать перевод: Цитата Свойство MainFormOnTaskBar контролирует, как кнопки в панели задач Windows обрабатываются VCL. Если свойство установлено в True, то кнопка на панели задач ассоциирована с главным окном приложения и показывает его заголовок. Если же свойство установлено в False, то кнопка на панели задач ассоциирована со специальным невидимым окном Application и показывает заголовок объекта Аpplication. MainFormOnTaskBar должна быть установлена в True для работы эффектов Аэро в Windows Vista и выше. Это включает в себя предпросмотр (live thumbnails), Dynamic Windows, Windows Flip и Windows Flip 3D. Если вам нужно сменить поведение, то свойство MainFormOnTaskBar должно устанавливаться в .dpr файле сразу после Application.Initialize и до создания главной формы. Свойство MainFormOnTaskBar не следует менять после начальной установки. В противном случае вы получите неожиданное поведение программы. MainFormOnTaskBar устанавливается в True для новых приложений и равно False для старых приложений по соображениям совместимости. Вы можете менять это свойство и в старых приложениях. Заметьте, что это свойство может менять Z-порядок ваших окон. Для обновления старых VCL-приложений, добавьте следующую строку в ваш файл .dpr сразу после Application.Initialize;:
Application.MainFormOnTaskbar := True; Эта строка автоматически создаётся у новых проектов. Для дальнейшей информации — см. http://www.microsoft.com/windows/products/windowsvista/features/experiences/aero.mspx Если интересно — см. также http://transl-gunsmoker.blogspot.com/2009/03/windows-vista-delphi-1.html |
|
Алексей |
|
|
Senior Member
Рейтинг (т): 17 |
ничего страшного не вижу в этом |
|
CodeMonkey |
|
|
…ну если вы не видите ничего страшного в том, что программа работает неправильно, то флаг вам в руки… |
|
VahaC |
|
|
Цитата Алексей @ 02.04.10, 14:28 MainFormOnTaskBar должна быть установлена в True для работы эффектов Аэро в Windows Vista и выше. Это включает в себя предпросмотр (live thumbnails), Dynamic Windows, Windows Flip и Windows Flip 3D. Если вы считаете нормальным отказаться от этих трёх примочек(кстати именно из-за них большинство знакомых юзеров перешло с ХР на Vista/7) то я поддерживаю предыдущий пост Цитата CodeMonkey @ 02.04.10, 14:48 то флаг вам в руки…
ИМХО Сообщение отредактировано: VahaC — 02.04.10, 19:04 |
|
Riply |
|
|
Цитата VahaC @ 02.04.10, 19:01 Отказываясь от поддержки(использования) новых примочек ос, вы заранее обрекаете свои программа на «провал». К моему глубокому сожалению, вынуждена согласиться с данным утверждением. |
|
CodeMonkey |
|
|
Вообще, если отвлечься от Vista/7, существует доступная и простая концепция: у вас есть окно? -> на панели задач есть его кнопка. Взаимно-однозначное соответствие. Однако, энцать лет тому назад при разработке Delphi было принято решение, использовать хак для введения иного поведения. Да, это кривой хак, потому что он делает что-то, что не предусматривалось системой (каждое Delphi приложение кидает вам на рабочий стол видимое окно с нулевым размером). Но это как-то работало и потому всех устраивало, не задумываясь о том, что, вообще говоря, это не есть нормально. Хороший пример на тему не идти против системы, кстати. Так что с MainFormOnTaskBar = True программа получается чуть попрямее, чем без него (вне зависимости от новых фишек ОС). |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Система, Windows API
- Следующая тема
[ Script execution time: 0,0495 ] [ 16 queries used ] [ Generated: 28.01.23, 21:42 GMT ]
















)




