Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать чтобы форма не отвечала на minimaze? [D6, WinXP]


Viktor1 ©   (2002-10-08 11:26:00) 

Как сделать чтобы форма не отвечала на minimaze?
В windows есть кнопка-сложить все окна-вот чтоб моя программа не слаживалась? Пробовал разное, прошёл все Help, всё равно слаживается. Спасибо!!!


Pat   (2002-10-09 16:12:00) [1]

>Например как в PROMT сделана панель (где-то ещё встречал в
>утилитах ...)..., прямо как в windows. Как???!!!
Дык, батенька, с этого и надо было начинать!!
ShAppbarMessage() вам поможет...


Opuhshii   (2002-10-09 13:12:00) [2]

procedure WndProc(var Message: TMessage); override;

Description
WndProc is the first method that receives messagesfor a form. After calling the inherited method, WndProc performs some window activation, focus, and position message handling necessary to keep in sync with Windows. Override WndProc to change how the form responds to Windows messages.
думаю поможет,....


Ученик   (2002-10-09 09:54:00) [3]

>Viktor1 © (09.10.02 09:47)
>Проверил оба варианта - не работают
Вариант проверялся
>прямо как в windows. Как???!!!

1. http://www.geocities.com/SiliconValley/9486/appbar14.zip
2. Поиск на этом сайте AppBar


Viktor1   (2002-10-09 09:47:00) [4]

Pat, Ученик :
Проверил оба варианта - не работают, есть разные вариаты как сделать, но только надо добавлять form1.FormStyle:=fsStayOnTop, что мне не нужно. Например как в PROMT сделана панель (где-то ещё встречал в утилитах ...)..., прямо как в windows. Как???!!!


Pat   (2002-10-08 21:55:00) [5]

>..чтоб моя программа не слаживалась
Отлаживание программы - избавление программы от лажи :-)))
Сорри за оффтопик :-)


Ученик   (2002-10-08 21:55:00) [6]

Еще вариант (окно обыкновенное), но будет моргание окна

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(DoMessage)
end;

function TForm1.DoMessage(var Message : TMessage) : Boolean;
begin
Result := False;
if (Message.Msg = WM_SIZE) and (Message.WParam = SIZE_MINIMIZED) then
Application.Restore
end;


Pat   (2002-10-08 21:54:00) [7]


type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMWindowPosChanging(var Message: TMessage); message WM_WINDOWPOSCHANGING;

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMWindowPosChanging(var Message: TMessage);
begin
if (PWindowPos(Message.Lparam)^.flags and SWP_HIDEWINDOW) <> 0 then
PWindowPos(Message.Lparam)^.flags := PWindowPos(Message.Lparam)^.flags and
(not SWP_HIDEWINDOW) or (SWP_SHOWWINDOW);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
form1.FormStyle:=fsStayOnTop
end;


Ученик   (2002-10-08 21:40:00) [8]

>Viktor1 © (08.10.02 21:34)
Что-то подобное и предполагалось, в этом случае непонятно, почему она не должна перекрывать остальные ???


Viktor1   (2002-10-08 21:34:00) [9]

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

relict: не работает!!!???


relict   (2002-10-08 17:06:00) [10]


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

var
Form1: TForm1;

implementation

{$R *.dfm}
Procedure TForm1.WMGetSysCommand(var Message : TMessage) ;
begin
if (Message.wParam = SC_MINIMIZE) then form1.Visible:=False else Inherited;
end;

вот тут я форму прячу..а ты её обратно востанавливай


Ученик   (2002-10-08 16:54:00) [11]

>Viktor1 © (08.10.02 11:26)
Вернемся к постановке задачи:
Почему программа не должна отвечать на Minimize ?


Viktor1   (2002-10-08 16:25:00) [12]

Когда форма модальная FormStyle=fsStayOnTop - это работает, но тогда форма поверх других окон, а это совсем не нужно.


Демонов Е.В.   (2002-10-08 14:54:00) [13]

Поставим вопрос иначе :
Что происходит при нажатии пиктограммы " свернуть все окна" и при нажатии кнопок Win+"M".

Я както пробовал отыскать что происходит не плучилось - единственное что понял - "свернуть все окна" и Win+"M" действуют по разному.
Многи программы которые при сворачивании прячутся в трею при нажатии вышеупомянутых кнопок сворачиваются не в трею - однако совсем недавно заметил что например окно диспечера задач при нажатии все тех же кнопок благополучно сворачивается в трею (если конечно чтоит галочка напротив соответствующего пункта настроек).

Так что же происходит при нажатии энтих кнопок ?


REA   (2002-10-08 14:08:00) [14]

А если показывать форму как модальную?


Ученик   (2002-10-08 13:39:00) [15]

procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE)
end;

FormStyle=fsStayOnTop


Viktor1   (2002-10-08 13:36:00) [16]

Проверил не работает!


charge   (2002-10-08 12:21:00) [17]

Перехватывать WM_SHOWWINDOWкак-то так:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
private
{ Private declarations }
procedure wmShow (var msg : TWMSHOWWINDOW); message WM_SHOWWINDOW;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }

procedure TForm1.wmShow(var msg: TWMSHOWWINDOW);
begin
if msg.Show then
inherited
else
msg.Result := 0;
end;

end.


Peter Gluhiy   (2002-10-08 12:07:00) [18]

Извините за ответ. Поспешил :-(


Peter Gluhiy   (2002-10-08 12:04:00) [19]

В BorderIcons у формы установить biMinimize в false.


Наверх

Титульная страница Поиск, карта сайта Написать письмо