Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Как прогу убрать в фоновый режим   Найти похожие ветки 

 
IOrist   (2007-11-09 20:39) [0]

Как зделать в Delphi, чтобы при запуске процедуры например
BottonClick программа убралась в фоновый режим, а при окончании
востановилась?


 
Anatoly Podgoretsky ©   (2007-11-09 20:44) [1]

> IOrist  (09.11.2007 20:39:00)  [0]

Что значит фоновый? Случайно не невидимый ли?


 
Dib@zol ©   (2007-11-09 20:46) [2]

> Что значит фоновый? Случайно не невидимый ли?

Ога, невидимый. Как в винраре.

ShowWindow(Form1.Handle, SW_HIDE);


 
IOrist   (2007-11-09 21:46) [3]

да именно как в винраре
ShowWindow(Form1.Handle, SW_HIDE);
так мы просто свернем программу, а надо, чтобы она на нажатие кнопки
просто стала работать как процесс, её иконка отображаласть в как его ну там где часы и др поцессы, а по завершению работы ButtonClick восстановилась уже как приложение

также, как в винраре если нажать "Фоновый режим".


 
Anatoly Podgoretsky ©   (2007-11-09 21:49) [4]

> IOrist  (09.11.2007 21:46:03)  [3]

Еще более не понятно стало.
То есть ты иконку хочешь добавить что ли?
С восстановлением хуже, Гейтс сделал обрезание попрыгунчикам.


 
IOrist   (2007-11-09 21:55) [5]

добавь в архив какой небудь файл, кода будет архивить
нажми "Фоновый режим".
Произойдет то, что как раз мне и нужно.
так быстрее, я врятли обьясню.


 
Anatoly Podgoretsky ©   (2007-11-09 22:02) [6]

> IOrist  (09.11.2007 21:55:05)  [5]

У меня нет кнопки "Фоновый режим".


 
Zeqfreed ©   (2007-11-09 22:22) [7]

Анатолий пытается намекнуть, что «отобразить иконку в трее» и «скрыть окно программы» это две никак не взаимосвязанных операции. Как выполнить вторую уже подсказали, реализацию первой подскажет любой поисковик.


 
DVM ©   (2007-11-09 22:24) [8]


> Гейтс сделал обрезание попрыгунчикам.

все равно выпрыгнуть не проблема


 
Anatoly Podgoretsky ©   (2007-11-09 22:25) [9]

> Zeqfreed  (09.11.2007 22:22:07)  [7]

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


 
IOrist   (2007-11-09 22:26) [10]

Забудь. Давай по другому.
 У меня в прге на нажатие кнопки происходит печать отчетов, которые запрашиваются у удаленного сервера. Отчетов много и печать происходит не 1 сек, а гдето 5 мин.
 Прога просто будет выполнять эту процедуру и не на что не реагировать.
 Хотелось, чтобы выполнялась та процедура и я параллельно мог бы, скажем, чтото редактировать, изменять данные в Grid"е и т.д.


 
Anatoly Podgoretsky ©   (2007-11-09 22:27) [11]


>     • «Начинающим» (вспомогательная конференция. если вам
> трудно понять самим, что вам нужно или есть желание и способности
> помогать новичкам — вам сюда)


 
DVM ©   (2007-11-09 22:27) [12]


> Хотелось, чтобы выполнялась та процедура и я параллельно
> мог бы, скажем, чтото редактировать, изменять данные в Grid"е
> и т.д.

печать в отдельный поток вынести


 
Anatoly Podgoretsky ©   (2007-11-09 22:28) [13]


> Забудь. Давай по другому.

Поток что ли нужен?


 
Anatoly Podgoretsky ©   (2007-11-09 22:29) [14]

> DVM  (09.11.2007 22:24:08)  [8]

Гейтс старался, давай не будем ему мешать.


 
IOrist   (2007-11-09 22:31) [15]

да наверно.


 
Anatoly Podgoretsky ©   (2007-11-09 22:32) [16]

> IOrist  (09.11.2007 22:31:15)  [15]

Еще остается вопрос, чтобы окончательно выяснить твои намеренья, это должно быть сделано с помощью WinAPI или в рамках VCL?
Ветку то разместил в WinAPI


 
IOrist   (2007-11-09 22:38) [17]


> Еще остается вопрос, чтобы окончательно выяснить твои намеренья,
>  это должно быть сделано с помощью WinAPI или в рамках VCL?
> Ветку то разместил в WinAPI


я не знаю как создать этот поток, поэтому и обращаюсь.
Если вы считаете, что это можно сделать через поток, то пожалейста объясните


 
DVM ©   (2007-11-09 22:47) [18]


> Если вы считаете, что это можно сделать через поток, то
> пожалейста объясните

Для начала ответь на [16]. Ну и еще можно начать читать про TThread в справке.


 
IOrist   (2007-11-09 23:02) [19]

я не знаю про WinAPI и VCL


 
IOrist   (2007-11-09 23:11) [20]

ой кнечно же c помощью WinAPI


 
DVM ©   (2007-11-09 23:16) [21]


> ой кнечно же c помощью WinAPI

А остальная часть твоей программы тоже написана чиста на WinApi ?
Если нет, то зачем поток создаать средствами только API? Тогда уж TThread.


 
Progs   (2007-11-10 14:07) [22]

Так чтоли.
Часть кода:

const    
 WM_NOTIFYTRAYICON = WM_USER + 1;

private
 procedure WMTRAYICONNOTIFY(var Msg: TMessage); message WM_NOTIFYTRAYICON;

begin

procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage); // процедуру добавляет пользователь
var
 s: string;
 P: TPoint;
begin
 case Msg.LParam of
   WM_MOUSEMOVE:     s := "Мышь сдвинута";
   WM_LBUTTONDOWN: s := "Левая кнопка нажата";
   WM_LBUTTONUP:     s := "Левая кнопка отпущена";
   WM_LBUTTONDBLCLK: s := "Два раза нажата левая кнопка";
   WM_RBUTTONDOWN:   s := "Правая кнопка нажата";
   WM_RBUTTONUP:     Begin
                     s := "Правая кнопка отпущена";
                     GetCursorPos(p);
                     SetForegroundWindow(Application.MainForm.Handle);
                     PopupMenu1.Popup(P.X, P.Y);
                     End;

   WM_RBUTTONDBLCLK: s := "Два раза нажата правая кнопка";

  else              s := IntToStr(Msg.LParam);

 end;
 ListBox1.Items.Add(s);
 ListBox1.ItemIndex := ListBox1.Items.Count - 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
nidata: TNotifyIconData;
begin
// заполним структуру nidata,
// поля которой определяют значок
// на System Tray
with nidata do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle; // окно (приложение), которое представляет значок
uId := 1; // номер значка (одно приложение может разместить несколько значков)
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; // что надо сделать
uCallBackMessage := WM_NOTIFYTRAYICON;
hIcon := Application.Icon.Handle;
szTip := "My Icon";

end;
Shell_NotifyIcon(NIM_ADD, @nidata);
end;

procedure TForm1.N1Click(Sender: TObject);
var
nidata: TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uId := 1;
end;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end;
end.

А в меню Popup выставляешь необходимые строки и процедуры. Ну а дальше дело техники. Все процедуры находятся в основном разделе implementation


 
DVM ©   (2007-11-10 14:25) [23]


> Progs   (10.11.07 14:07) [22]
> Так чтоли.
> Часть кода:

Не так. Ты прочитай внимательно всю ветку, выяснили же, что не иконка в области уведомлений ему нужна а многопоточность.


 
Anatoly Podgoretsky ©   (2007-11-10 14:41) [24]

> DVM  (10.11.2007 14:25:23)  [23]

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


 
IOrist   (2007-11-10 14:46) [25]

с иконкой разобрался:

ShowWindow(Handle,SW_HIDE);
ShowWindow(application.Handle, SW_HIDE);
FWTrayIcon1.Visible:=true;

//убрать


ShowWindow(Handle,SW_SHOW);
ShowWindow(application.Handle, SW_SHOW);
FWTrayIcon1.Visible:=true;

//восстановить

Осталось тока понять этот TTread


 
Anatoly Podgoretsky ©   (2007-11-10 14:54) [26]

> IOrist  (10.11.2007 14:46:25)  [25]

Там ничего сверхестественного нет, начни со чтения справки, по теме Writing multi-threaded applications


 
Anatoly Podgoretsky ©   (2007-11-10 14:58) [27]

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


 
IOrist   (2007-11-10 15:03) [28]


> пункт меню запретить до окончания и продолжать работать
> с программой.


да да точно


 
Anatoly Podgoretsky ©   (2007-11-10 15:06) [29]

> IOrist  (10.11.2007 15:03:28)  [28]

А раз согласен, то убери иконку и скрытие окна и пользователю будет удобно работать, при необходимости можешь где-то выводить состояние процесса отчета.


 
IOrist   (2007-11-10 15:25) [30]

Спасибо Anatoly Podgoretsky ©



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

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.03 c
2-1194428773
temp77
2007-11-07 12:46
2007.12.02
Как мне правильно сформировать ConnectionString


15-1193636264
boriskb
2007-10-29 08:37
2007.12.02
Сниму 2-х комнатную в Москве.


15-1193901454
Игорь Шевченко
2007-11-01 10:17
2007.12.02
Кстати, о расчетах по кредитным картам :)


15-1194063967
SerJaNT
2007-11-03 07:26
2007.12.02
Рейтинг учащихся


15-1192084197
de.
2007-10-11 10:29
2007.12.02
to Delphi 7