Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1133858901
SergeyRocker
2005-12-06 11:48
2006.02.26
Масштабирование Printer.Canvas налету


15-1139253380
Gero
2006-02-06 22:16
2006.02.26
Проверка соответстивия пароля запароленному zip-файлу


6-1131830669
Volf_555
2005-11-13 00:24
2006.02.26
Как получить текст строки состояния активного окна?


2-1138998981
igorioha
2006-02-03 23:36
2006.02.26
dataType:tFieldType


2-1139569824
BaBayka007
2006-02-10 14:10
2006.02.26
Подскажите пожалуйста неопытному....





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