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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.045 c
15-1193927282
oldman
2007-11-01 17:28
2007.12.02
Зашкаливает частотку монитора... :(


15-1194023702
Kerk
2007-11-02 20:15
2007.12.02
Вопрос о русском языке


4-1172864916
DevilDevil
2007-03-02 22:48
2007.12.02
Стек:


15-1193703706
DimonS
2007-10-30 03:21
2007.12.02
PowerPack 2.47


15-1194287167
Kostafey
2007-11-05 21:26
2007.12.02
Систематизация мозгов в рамках Apache-пректов





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