TApplication
При минимизации формы я использую RxTrayIcon, чтобы при этом исчезла
кнопка из Панели задач вызываю ShowWindow(Application.Handle,SW_HIDE).
Но вот незадача - не получается при восстановлении приложения (после клика
на TrayIcon) добиться, чтобы оно становилось поверх других окон и обязательно было активным.
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Предлагаю вам ознакомиться с приведенной таблицей событий этого объекта:
События |
Возникает |
OnActionExecute: TActionEvent |
Происходит при вызове метода Execute перед обработкой списка событий. |
OnActionUpdate: TNotifyEvent |
Происходит при вызове метода Update; |
OnActivate: TNotifyEvent |
При переходе приложения в активное состояние. |
OnDeactivate:TNotifyEvent |
При переключении на другое приложение Windows |
OnException: TExceptionEvent |
При возникновении исключительной ситуации |
OnHelp: THelpEvent |
При запросе приложением справочной системы. |
OnHint: TNotifyEvent |
При перемещении мыши над компонентом, у которого есть строка подсказки (Hint) |
OnIdle: TNotifyEvent |
При отсутствии работы у приложения |
OnMessage: TMessageEvent |
При получении сообщения Windows |
OnMinimize: TNotifyEvent |
При минимизации приложения |
OnRestore: TNotifyEvent |
При восстановлении приложения в нормальный размер |
OnShowHint: TShowHintEvent |
При выводе строки подсказки (Hint) |
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Code: |
procedure WMActivateApp(var Msg: TWMActivateApp); message WM_ACTIVATEAPP; procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
{©Drkb v.3www.drkb.ru}
... procedure Form2.WMActivateApp(var Msg: TWMActivateApp); begin if IsIconic(Application.Handle) then begin ShowWindow(Application.Handle, SW_RESTORE); SetActiveWindow(Handle); end; inherited; end;
procedure Form2.WMSysCommand(var Msg: TWMSysCommand); begin if (Msg.CmdType = SC_Minimize) then ShowWindow(Application.Handle, SW_MINIMIZE) else inherited; end;
|
Теперь при сворачивании формы сворачиваеться все приложение.
Автор Alex
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Code: |
>> Замена штатного Application.ProcessMessages
Хорошо использовать в DLL или бесформенных приложениях, если внутри цикла возникает необходимость в использовании Application.ProcessMessages.
Зависимости: Windows, Messages Автор: ssk, Copyright: составлено из кусков кода Borland ***************************************************** }
procedure ProcessMessagesEx; function IsKeyMsg(var Msg: TMsg): Boolean; const CN_BASE = $BC00; var Wnd: HWND; begin Result := False; with Msg do if (Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST) then begin Wnd := GetCapture; if Wnd = 0 then begin Wnd := HWnd; if SendMessage(Wnd, CN_BASE + Message, WParam, LParam) <> 0 then Result := True; end else if (LongWord(GetWindowLong(Wnd, GWL_HINSTANCE)) = HInstance) then if SendMessage(Wnd, CN_BASE + Message, WParam, LParam) <> 0 then Result := True; end; end;
function ProcessMessage(var Msg: TMsg): Boolean; begin Result := False; if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin Result := True; if Msg.Message <> WM_QUIT then if not IsKeyMsg(Msg) then begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; end;
var Msg: TMsg; begin while ProcessMessage(Msg) do {loop}; end; |
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Если Вы хотет, чтобы Ваша программа не появлялась на панели задач, но форма была видна, то воспользуйтесь следующей командой:
Code: |
ShowWindow (Application.handle, SW_HIDE); |
Данная команда в основном используется в приложениях, которае активируются через иконку в трее.
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Создайте процедуру, которая будет вызываться при событии Application.OnIdle.
Обьявим процедуру:
Code: |
{©Drkb v.3(2007): www.drkb.ru}
{Private declarations} procedure IdleEventHandler(Sender: TObject; var Done: Boolean);
В разделе implementation опишем поцедуру:
procedure TForm1.IdleEventHandler(Sender: TObject; var Done: Boolean); begin {Do a small bit of work here} Done := false; end; |
В методе Form'ы OnCreate укажем что наша процедура вызывается на событии:
Application.OnIdle.Application.OnIdle := IdleEventHandler;
Событие OnIdle возникает один раз - когда приложение переходит в режим "безделья" (idle).
Если в обработчике переменной Done присвоить False событие будет вызываться
вновь и вновь, до тех пор пока приложение "бездельничает" и
переменной Done не присвоенно значение True.
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Code: |
// set the standard windows icon for the application Application.Icon := nil; |
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Если навсегда - то поставить у формы FormStyle свойство в fsStayonTop,
если надо чтобы просто программа была установлена в активное состояние (как будто кликнули на ней на таскбаре) - Application.BringtoFront
Кроме того можно играться API функцией ShowWindow передавая ей Form1.Handle, или Application.Handle и один из кучи параметров - посмотри на нее Help - там много вариантов.
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Эта статья взята мной из рассылки "СообЧА. Программирование на Delphi". К сожалению авторство не указано, но думаю многим будет интересно.
Класс TApplication, являющийся наследником класса TComponent, представляет собой фундаметальный класс, свойства и методы которого описывают основные характеристики Windows-приложения. Этот класс активно используется для выполнения специфических действий, зависящих от операционной системы.
Иерархия TObject – TPersistent – TComponent
Модуль Forms
В каждом приложении автоматически создается объект Application типа TApplication – приложение. Application имеет ряд свойств, методов, событий, характеризующих приложение в целом.
Собственные свойства класса TApplication.
- Подробности
- Родительская категория: VCL
- Категория: TApplication
Для этого необходимо обработать сообщение WMQUERYOPEN. Однако обработчик сообщения необходимо поместить в секции private - т.е. в объявлении TForm.
Code: |
procedure WMQueryOpen(var Msg: TWMQueryOpen); message WM_QUERYOPEN;
Реализация будет выглядеть следующим образом:
procedure WMQueryOpen(var Msg: TWMQueryOpen); begin Msg.Result := 0; end; |
- Подробности
- Родительская категория: VCL
- Категория: TApplication