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

Вниз

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

 
SetWindowPos   (2006-02-12 18:34) [0]

Что бы форма была поверх всех я использую
    SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);

А как обратно сделать не поверх всех?


 
Marser ©   (2006-02-12 18:39) [1]

HWND_NOTOPMOST


 
SetWindowPos   (2006-02-12 18:47) [2]

Оно не работает!
    SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);

Окно всё равно поверх всех висит!


 
Marser ©   (2006-02-12 18:52) [3]

Точнее выше всех обычных. Есть ещё HWND_BOTTOM


 
SetWindowPos   (2006-02-12 22:04) [4]

Это тоже не работает:
     SetWindowPos(Form1.Handle,HWND_BOTTOM,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);

Но если добавить SWP_HIDEWINDOW то окно прячется:

     SetWindowPos(Form1.Handle,HWND_BOTTOM,0,0,0,0,SWP_HIDEWINDOW+SWP_NOMOVE+SWP_NOSI ZE);

А как ещё можно сделать окно не поверх остальных?


 
SetWindowPos   (2006-02-12 22:18) [5]

Только что создал пустой проект-всё работает!


procedure TForm1.OnTopClick(Sender: TObject);
begin
  SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
end;

procedure TForm1.NormalClick(Sender: TObject);
begin
  SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
end;


 
SetWindowPos   (2006-02-13 13:57) [6]

Нашёл, в чём было дело - Эта функция не работает, если её вызывать из соседней модальной формы!

Это основная форма, и с ней всё работает:

unit Unit1;
interface
uses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2;
type
 TForm1 = class(TForm)
   OnTop: TButton;
   Normal: TButton;
   NewFormCreate: TButton;
   procedure OnTopClick(Sender: TObject);
   procedure NormalClick(Sender: TObject);
   procedure NewFormCreateClick(Sender: TObject);
 private
 public
 end;

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

procedure TForm1.OnTopClick(Sender: TObject);  // Set AlwaysOnTop Form1
begin
  SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
end;

procedure TForm1.NormalClick(Sender: TObject);   // Set Normal Form1 - РАБОТАЕТ
begin
  SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
end;

procedure TForm1.NewFormCreateClick(Sender: TObject);  //Open NewForm
begin
 NewForm:=TNewForm.Create(self);
 TRY
   NewForm.ShowModal;
 FINALLY
   NewForm.Release;
 END;
end;

end.



А это вторая форма-модальная, которая создаётся из первой, и в ней функция SetWindowPos по отношению к форме Form1 не работает:


unit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
 TNewForm = class(TForm)
   Normal: TButton;
   procedure NormalClick(Sender: TObject);
 private
 public
 end;

var  NewForm: TNewForm;
implementation
uses Unit1; {$R *.DFM}

procedure TNewForm.NormalClick(Sender: TObject);  //Set Normal Form1 - ЭТО НЕ РАБОТАЕТ ТОЛЬКО ПРИ ВЫЗОВЕ ИЗ СВОЕЙ ФОРМЫ!
begin
 SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
 close;
end;

end.



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

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

Наверх




Память: 0.48 MB
Время: 0.049 c
2-1139245065
NineStars
2006-02-06 19:57
2006.02.26
Функция обрабатывающая массив


1-1138180657
ceval
2006-01-25 12:17
2006.02.26
Может у кого есть исходники адрестной книги


2-1139245399
Glex
2006-02-06 20:03
2006.02.26
Как освободить(Free) экземпляр TImage при клике на него?


15-1139270635
pargo
2006-02-07 03:03
2006.02.26
Расширение .djvu. С чем его едят ?


15-1139089069
Плохиш
2006-02-05 00:37
2006.02.26
А что сайт опять куда-то переезжает?