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

Вниз

Как сделать чтобы форма не отвечала на minimaze?   Найти похожие ветки 

 
Viktor1   (2002-10-08 11:26) [0]

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


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

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


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

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


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

Перехватывать 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.


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

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


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

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

FormStyle=fsStayOnTop


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

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


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

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

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

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


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

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


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

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


 
relict   (2002-10-08 17:06) [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;

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


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

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

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


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

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


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


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:55) [14]

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

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:55) [15]

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


 
Viktor1   (2002-10-09 09:47) [16]

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


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

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

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


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

procedure WndProc(var Message: TMessage); override;

Description
WndProc is the first method that receives messages for 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.
думаю поможет,....


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

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




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

Форум: "WinAPI";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
14-59332
DiamondShark
2002-10-31 17:08
2002.11.18
Да здравствуют наши программисты!


14-59425
Дмитрий К.К.
2002-10-31 09:03
2002.11.18
Увековечить себя в mp3 :)


6-59312
Bazzik
2002-08-24 15:02
2002.11.18
Как узнать объем internet-трафика


3-59079
Лазоренко
2002-10-29 13:18
2002.11.18
ADO dBase 5 BCB6


14-59390
Tornado
2002-10-30 08:29
2002.11.18
Хороший FAQ по Дульфи





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