Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2008, 23:04   #1
Sanek777
Заблокирован
Пользователь
 
Регистрация: 31.07.2008
Сообщений: 90
По умолчанию Сворачивание в трей

У меня у формы border_style:=bsTooldWimdow. В окошке формы я сдела только крестик теперь мне нужно сделать так чтобы был и крсетик и черточка и чтоб при нажатии черточки ну свернуть программа уходила в трей то есть TrayIcon1.Visible := True;(пишу на Borland Development Studio 2006) Помогите, плиззз!!!
Sanek777 вне форума Ответить с цитированием
Старый 06.10.2008, 23:13   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

В свойстве BorderIcons поставь что надо а что нет(по кнопкам)
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 06.10.2008, 23:16   #3
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
Type
Procedure WinManager(Sender:TObject);

procedure TForm1.FormCreate(Sender: TObject);
begin
   application.OnMinimize:=winmanager;
end;

Procedure Tform1.WinManager(Sender: TObject);
begin
  ShowWindow(Handle,SW_HIDE);
  form1.Visible:=false;
end;
Это по сворачиванию
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 24.08.2011, 12:43   #4
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Решил написать программу в Delphi XE со сворачиванием в tray, нашел пример, кинул на форму PopupMenu, ввел следующий код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  ShellApi, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure Ic(n:integer; Icon:TIcon);
    procedure ControlWindow(var Msg:TMessage); message WM_SYSCOMMAND;
    procedure OnMinimizeProc(Sender:TObject);
    procedure IconMouse(var Msg:TMessage); message WM_USER+1;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.ControlWindow(var Msg: TMessage);
begin
if Msg.WParam=SC_MINIMIZE then
begin
  Ic(1,Application.Icon); //Добавляется значок в трей
  ShowWindow(Handle,SW_HIDE); //Программа скрывается
  ShowWindow(Application.Handle,SW_HIDE); //Иконка с TaskBar'a скрывается
end else inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize:=OnMinimizeProc;
end;

procedure TForm1.Ic(n: integer; Icon: TIcon);
var
Nim:TNotifyIconData;
begin
With Nim do
begin
  cbSize:=System.SizeOf(Nim);
  Wnd:=Form1.Handle;
  uID:=1;
  uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
  hicon:=Icon.Handle;
  uCallbackMessage:=WM_USER+1;
  szTip:='1';
  end;
case n of
1: Shell_NotifyIcon(Nim_Add,@Nim);
2: Shell_NotifyIcon(Nim_Delete,@Nim);
3: Shell_NotifyIcon(Nim_Modify,@Nim);
end;
end;

procedure TForm1.IconMouse(var Msg: TMessage);
var
p:Tpoint;
begin
GetCursorPos(p);
case Msg.LParam of //Проверяется какая кнопка нажата
WM_LBUTTONUP,WM_LBUTTONDBLCLK:
begin
  Ic(2,Application.Icon); //Удаляется значок из трея
  ShowWindow(Application.Handle,SW_SHOW); //Восстанавливается окно программы
end;
WM_RBUTTONUP:
begin
  SetForegroundWindow(Handle); // Восстановление программы в качестве переднего окна
  PopupMenu1.Popup(p.X,p.Y); // Всплывание Popup
  PostMessage(Handle,WM_NULL,0,0);
end;
end;
end;

procedure TForm1.OnMinimizeProc(Sender: TObject);
begin
PostMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;
end.
Программа компилируется нормально, сворачивается, а вот разворачиваться не хочет, при попытке разворота форма не появляется, а программа висит в процессах. В чем может быть проблема? Где ошибка?
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 24.08.2011, 13:08   #5
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Достаточно "ShowWindow(Handle...".
"ShowWindow(Application.Handle. .." - убрать/заменить
Silver_S вне форума Ответить с цитированием
Старый 24.08.2011, 14:20   #6
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Silver_S Посмотреть сообщение
Достаточно "ShowWindow(Handle...".
"ShowWindow(Application.Handle. .." - убрать/заменить
Спасибо большое! Может кто нибудь еще подсказать как сделать так, чтобы программа загружалась сразу свернутая в трей?
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сворачивание окон Blackmore Общие вопросы Delphi 1 19.05.2008 18:27
[ищу мануал] Сворачивание в трей и показз сообщений из него. lazutov Общие вопросы Delphi 8 21.04.2008 00:02
Свертывание в трей AlphA Общие вопросы Delphi 10 12.11.2007 13:01
Трей и шатдаун oLMeR Общие вопросы Delphi 1 04.12.2006 14:41