Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
ВнизКак форму сделать не поверх всех? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c