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

Вниз

Минимайз окон   Найти похожие ветки 

 
AndreyA   (2003-10-28 14:05) [0]

При сворачивании окна, оно становится над пуском маленькой полоской. Как бы сделать обычную функциональность??? Чтобы при сворачивании просто попадало в трей.


 
Skier   (2003-10-28 14:08) [1]


> Как бы сделать обычную функциональность???

Это и есть обычная функциональность


> Чтобы при сворачивании просто попадало в трей.

см. Shell_NotifyIcon
А лучше скачай готовый компонент, в сети их полно...


 
clickmaker   (2003-10-28 14:09) [2]

Shell_NotifyIcon + скрытие окна при сворачивании


 
AndreyA   (2003-10-28 14:10) [3]

А если совсем по тупому объяснить??? Как понять о сворачивании?? Не вижу евента о минимизации??


 
AndreyA   (2003-10-28 14:38) [4]

Плиз, очень надо. Помогите.


 
dataMaster   (2003-10-28 14:40) [5]

Мож тебе надо просто Application.Minimize сделать, а не в трей?


 
zapped   (2003-10-28 14:46) [6]

окно, видать, MDIChild?


 
DVM   (2003-10-28 14:47) [7]


> Чтобы при сворачивании просто попадало в трей.

Трей понятие растяжимое.
Попадало на панель задач туда где список задач или в индикаторную область, "туда где часики"? Что надо то?


 
AndreyA   (2003-10-28 14:52) [8]

Вообщем окно не основное - сворачивается к пуску. А надо чтобы работало как основное. Сворачивалось бы все в список задач(не к часикам), и разворачивалось назад....

Енто наверно и надо Application.Minimize сделать

только когда?? по какому событию???


 
zapped   (2003-10-28 14:55) [9]

2 DVM © (28.10.03 14:47) [7]
> Трей понятие растяжимое
не уверен :)))
надо глоссарий завести ;)))
при всём уважении... панель задач на моём веку треем ещё никто не называл...


 
dataMaster   (2003-10-28 14:56) [10]

Если сделаешь Application.Minimize, свернешь всё приложение в панель задач и никаких окон видно не останется. А делать можно по любому событию: по клику кнопки, например, или по клику в меню.


 
AndreyA   (2003-10-28 15:04) [11]

Господа, предлагаю не разглагольстовать по поводу разниц треев и таскбаров и т.д. Вопрос конкретный, а ответа я так и не увидел.......Хотя думаю вопрос элементарный, просто не ковырял в эту сторону.

При сворачивании не главного окна нужно свернуть всю прогу в таскбар, а не окно к пуску. И аналогично назад.

Еще раз, акцентирую внимание. Нужно чтобы НАД пуском ничего не болталось при сворачивании (именно НАД)


 
zapped   (2003-10-28 15:12) [12]


TFindForm = class(TForm)
...
private
{ Private declarations }
procedure WMSYSCOMMAND(var Mes: TMessage); message WM_SYSCOMMAND;
...

procedure TFindForm.WMSYSCOMMAND(var Mes: TMessage);
begin
if Mes.WParam = SC_MINIMIZE then
Application.Minimize
else
inherited;
end;


>Вопрос конкретный
...
>Чтобы при сворачивании просто попадало в трей
...
>Сворачивалось бы все в список задач ( не к часикам)

;)))
дружите с русским языком...
следи за собой, будь осторожен (с) Виктор Цой


 
zapped   (2003-10-28 15:14) [13]

в дополнение к [12]:
как можно догадаться, экземпляр TFindForm - не основная форма


 
dataMaster   (2003-10-28 15:16) [14]

При сворачивании не главного окна нужно свернуть всю прогу в таскбар, а не окно к пуску. И аналогично назад.

Ну так бы сразу и сказал. Измени юнит той формы, которую минимизируешь:

type
...

protected
procedure WMGetSysCommand(var Message :TMessage); message WM_SYSCOMMAND;
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.WMGetSysCommand(var Message : TMessage) ;
begin
if (Message.wParam = SC_MINIMIZE) then
Application.Minimize
else inherited;
end;


а восстановить Application.Restore


 
AndreyA   (2003-10-28 15:17) [15]

Спасибо.
Допустим написал не то. Постараюсь следить.

Предпологаю факт: с увеличением знаний у человека уменьшается кол-во ответов с пустыми упрекамии насмешками, и увеличивается кол-во конкретной помощи.


 
zapped   (2003-10-28 15:18) [16]

;))))))
<offtopic>
>Нужно чтобы НАД пуском ничего не болталось при сворачивании (именно НАД)

перемести ТАСКБАР (вправо, влево, наверх (у меня, кстати, он наверху :))) - экономит перемещения мыши при закрытии форм)):))))))), тогда форма свернётся в левый нижний угол
</offtopic>


 
DVM   (2003-10-28 15:45) [17]


> при всём уважении... панель задач на моём веку треем ещё
> никто не называл...

Трей он же поддон - это именно все окно панели задач. Его класс даже Shell_TrayWnd


 
KSergey   (2003-10-28 16:59) [18]

> DVM © (28.10.03 15:45) [17]
> Трей он же поддон - это именно все окно панели задач. Его
> класс даже Shell_TrayWnd

На счет класса верю на слово (хотя и сомниловка разбирает), однако трей - это пожизни было где часики, но никак не весь таск бар - не зря же и название у него свое собственно есть.

> AndreyA (28.10.03 15:17) [15]
> Предпологаю факт: с увеличением знаний у человека уменьшается
> кол-во ответов с пустыми упрекамии насмешками, и увеличивается
> кол-во конкретной помощи.

К сожалению, есть еще одно очень важное обстоятельство, Вами не подмеченное: отвечая на форумах годами на одни и те же вопросы, да еще зачастую присутствующие во многих факах - желание отвечать уменьшается. В том числе и у мастеров (это не про себя).


 
DVM   (2003-10-28 18:41) [19]


> KSergey © (28.10.03 16:59) [18]

Вот и Вы туда же. Это очень распространенное заблуждение насчет трея.
Сама Microsoft категорически против, чтобы Область уведомлений называли треем. Трей в ее терминологии это вся панель задач.
Не верите?
Зайдите на MSDN.
Вот кусок оттуда (поиск по слову Shell_NotifyIcon Function):
Жирным отмечено высказывание Microsoft. Это всречается часто в различных документах.

Shell_NotifyIcon Function

--------------------------------------------------------------------------------

Sends a message to the taskbar"s status area.

Syntax

BOOL Shell_NotifyIcon( DWORD dwMessage,
PNOTIFYICONDATA lpdata
);
Parameters

dwMessage
[in] Variable of type DWORD that specifies the action to be taken. It can have one of the following values:
NIM_ADD
Adds an icon to the status area. The hWnd and uID members of the NOTIFYICONDATA structure pointed to by lpdata will be used to identify the icon in later calls to Shell_NotifyIcon.
NIM_DELETE
Deletes an icon from the status area. Use the hWnd and uID members of the NOTIFYICONDATA structure pointed to by lpdata to identify the icon to be deleted.
NIM_MODIFY
Modifies an icon in the status area. Use the hWnd and uID members of the NOTIFYICONDATA structure pointed to by lpdata to identify the icon to be modified.
NIM_SETFOCUS
Version 5.0. Returns focus to the taskbar notification area. Taskbar icons should use this message when they have completed their user interface operation. For example, if the taskbar icon displays a shortcut menu, but the user presses ESC to cancel it, use NIM_SETFOCUS to return focus to the taskbar notification area.
NIM_SETVERSION
Version 5.0. Instructs the taskbar to behave according to the version number specified in the uVersion member of the structure pointed to by lpdata. This message allows you to specify whether you want the version 5.0 behavior found on Microsoft® Windows® 2000 systems, or that found with earlier Shell versions. The default value for uVersion is zero, indicating that the original Windows 95 notify icon behavior should be used. For details, see the Remarks section.
lpdata
[in] Address of a NOTIFYICONDATA structure. The content of the structure depends on the value of dwMessage.
Return Value

Returns TRUE if successful, or FALSE otherwise. If dwMessage is set to NIM_SETVERSION, the function returns TRUE if the version was successfully changed, or FALSE if the requested version is not supported.

Remarks

The taskbar notification area is sometimes erroneously called the "tray."

Version 5.0 of the Shell, found on Windows 2000, handles Shell_NotifyIcon mouse and keyboard events differently than earlier Shell versions, found on Microsoft Windows NT® 4.0, Windows 95, and Windows 98. The differences are:

If a user selects a notify icon"s shortcut menu with the keyboard, the version 5.0 Shell sends the associated application a WM_CONTEXTMENU message. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.
If a user selects a notify icon with the keyboard and activates it with the SPACEBAR or ENTER key, the version 5.0 Shell sends the associated application an NIN_KEYSELECT notification. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.
If a user selects a notify icon with the mouse and activates it with the ENTER key, the version 5.0 Shell sends the associated application an NIN_SELECT notification. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.
If a user passes the mouse pointer over an icon with which a balloon ToolTip is associated, the version 5.0 Shell sends the following messages:
NIN_BALLOONSHOW - Sent when the balloon is shown (balloons are queued).
NIN_BALLOONHIDE - Sent when the balloon disappears—when the icon is deleted, for example. This message is not sent if the balloon is dismissed because of a timeout or mouse click by the user.
NIN_BALLOONTIMEOUT - Sent when the balloon is dismissed because of a timeout.
NIN_BALLOONUSERCLICK - Sent when the balloon is dismissed because the user clicked the mouse.

You can select which way the Shell should behave by calling Shell_NotifyIcon with dwMessage set to NIM_SETVERSION. Set the uVersion member of the NOTIFYICONDATA structure to indicate whether you want version 5.0 or pre-version 5.0 behavior.

Note The messages discussed above are not conventional Windows messages. They are sent as the lParam value of the application-defined message that is specified when the icon is added with NIM_ADD.

Function Information

Minimum DLL Version shell32.dll version 4.0 or later
Custom Implementation No
Header shellapi.h
Import library shell32.lib
Minimum operating systems Windows NT 4.0, Windows 95

--------------------------------------------------------------------------------

© 2003 Microsoft Corporation. All rights reserved.


 
zapped   (2003-10-28 18:44) [20]

2 DVM © (28.10.03 18:41) [19]
спасибо... убедительно :)))


 
CC   (2003-10-28 18:58) [21]

А вы о чем ребята???


 
Kudesnik   (2003-10-28 19:39) [22]

Господа-товарищи! Имею сходную проблему, которая не решается перехватом WM_SYSCOMMAND. Окно главное, в этом смысле всё путём. НО! WM_SYSCOMMAND с SC_MINIMIZE отслеживает только минимизацию, произведённую через системное меню и кнопки в заголовке (мышкой или клавиатурой не важно). А при клике на кнопке активного окна на таск-баре, который также приводит к минимизации, WM_SYSCOMMAND-а ни разу не шлётся!.. Как ловить минимизацию таким способом? Help!


 
Юрий Зотов   (2003-10-28 20:05) [23]

> Kudesnik (28.10.03 19:39) [22]

Application.OnMinimize
Пример есть в справке.


 
Kudesnik   (2003-10-28 20:34) [24]

Спасибо огромное! Действительно есть пример и действительно так всё работает! Обалдеть! :))



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

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

Наверх




Память: 0.51 MB
Время: 0.086 c
14-41917
Думкин
2003-10-21 04:27
2003.11.13
С днем рождения! 21 октября.


4-42274
bytebutcher
2003-09-12 13:52
2003.11.13
По каким признакам определить что окно отображается в TaskBare?


14-42063
Rouse_
2003-10-23 12:40
2003.11.13
АТ - команды для Моторолы.


3-40980
Kosta
2003-10-16 17:58
2003.11.13
Получение списка пользователей из MSSQL(2000)


3-41020
Vick
2003-10-15 11:16
2003.11.13
Variant - неизвестный тип для ClientDataSet





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