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

Вниз

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

 
Stepan   (2004-12-14 07:37) [0]

Здравствуйте! Есть гл.форма приложения из нее по кнопке создается и вызывается другая форма, которую нужно заставить висеть поверх всех окон всех Windows приложений.
FormStyle = fsStayOnTop позволяет висеть поверх всех окон данного приложения. Но Запустив, например Word, он перекроет наше окно со fsStayOnTop.
Скажите, <subj>.

С уважением, Aladin


 
Cobalt ©   (2004-12-14 08:30) [1]

Хмммм, какой-то у тебя особенный Ворд - у меня Word2000 не перекрывает форму с FormStyle = fsStayOnTop


 
Stepan   (2004-12-14 09:24) [2]

!!! fsStayOnTop делаю не у главного окна приложения, а у динамически созданного по кнопке из главного окна.

Попробовал сделать fsStayOnTop у главного окна приложения - действительно висит как надо, даже поверх Word"a


 
Leonid Troyanovsky ©   (2004-12-14 09:55) [3]


> Stepan   (14.12.04 09:24) [2]
> !!! fsStayOnTop делаю не у главного окна приложения, а у
> динамически созданного по кнопке из главного окна.


Попробуй, например, так

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TForm2.Create(nil) do
    try
      Application.NormalizeTopMosts;
      Self.WindowState := wsMinimized;
      FormStyle := fsStayOnTop;
      ShowModal;
    finally
      Free;
      Self.WindowState := wsNormal;
      Application.RestoreTopMosts;
    end;
end;

NB При деактивации приложения у всех вторичных форм
  fsStayOntop сбрасывается.

--
С уважением, LVT.


 
Stepan   (2004-12-14 11:15) [4]

ShowModal не годится, так как нужна возможность перекл. между окнами. С Form1 не нужно ничего делать (например минимизировать)

var f: TForm2;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
 f:=TForm2.Create(nil);
 Application.NormalizeTopMosts;
 f.FormStyle := fsStayOnTop;
 f.Show;
 //Self.WindowState := wsNormal;
 //Application.RestoreTopMosts;
end;

Этот код работает почти как надо:
Form2 висит поверх Word"a
Но как только я кликну на Form2, то сразу же "всплывет" главное окно Form1 поверх Worda и окажется между Word и Form2
в Z-порядке Word/Form1/Form2

Как сделать, чтобы Form1 не всплывало, если кликаю на Form2 ?


 
Leonid Troyanovsky ©   (2004-12-14 11:31) [5]


> Stepan   (14.12.04 11:15) [4]
> ShowModal не годится, так как нужна возможность перекл.
> между окнами. С Form1 не нужно ничего делать (например минимизировать)


Такого я не знаю.
Могу лишь по своему опыту сказать, что окна типа fsStayOnTop
действуют на юзера раздражающе (солидарен).
Поэтому такую форму я стараюсь делать совсем небольшой,
с краткой информацией о произошедшем(их) событии(ях).
Кликнув по оному окну пользователь (если ему интересно)
сразу перейдет в нужное место приложения. Т.е., нужда в
подобных окнах возникает если само приложение свернуто
или находится на заднем плане.

Ну, а делать два или более таких окон на одно приложение
считаю перебором.

--
С уважением, LVT.


 
Delphi5.01 ©   (2004-12-14 12:02) [6]

Ia soglasen takie okna ne toko razdrajaut a prosto ne podkhodat. Chasto avtori shitaut chto ikh proizvidenie iskustva super i razmer doljen vpechatlat i prerekrivat vso. A ochen umnie daje knopku minimizaciu udlaut, bil i takoi variant.
No eto ne v obidu skazano. prosto ludhse ispolzovat normalnie okokna.


 
Stepan   (2004-12-14 12:06) [7]

Спасибо, LVT.
Может я зря сразу не сказал. Речь идет о программе, которая может "наклеивать" стики (липкие бумажки) с некоторой информацией. Сама программа - это форма Form1, а стики - экземпляры TForm2.
Стики и гл.форма должны быть независимыми, то есть кликая,сворачивая,разворачивая гл.форму Form1 стики (Form2) так и должны висеть поверх всех окон всех запущенных приложений, и наоборот, кликая на стик ничего не должно происходить с гл.формой Form1.

Так вот я и хочу, чтобы кликая на Form2 ничего не происходило с Form1.


 
Delphi5.01 ©   (2004-12-14 12:36) [8]

Togda ia mogu tebe skazat chto dannie programi reshaut etot vopros po drugomu. Stikeri eto odna otdelnaia programma kotoraiai poluchaet informaciu s komandnoi stroki. V etom sluchae glavnanai programma zapuskaet etu programmu stiker s raznimi parametrami. VOt i vso. Etim reshaetsa odnovremmenno vse problemi1 :-)
Jelau udachi.


 
Stepan   (2004-12-14 12:37) [9]

Раздражать не будут fsStayOnTop окна, так как я хочу сделать возможность "Приколоть" и "Отколоть".
Если польз-ль окно приколол, то оно висит поверх вообще всех окон, а если нет, то может перекрываться - как уж пользователь захочет.

Вопрос пока не исчерпан.
Хочу, чтобы кликая на Form2 ничего не происходило с Form1.
Можно ли как то это сделать ?


 
Delphi5.01 ©   (2004-12-14 12:44) [10]

Iz moei praktiki, net. Glavnaia forma doljna imet stayontop togda eio docheri poluchaut toje stayontop. v protivnom sluchaet oni poluchaut stayontop v otnoshenii svoego roditela kotori ne imeet takogo preoriteta.
A chem ne nravitsa moio reshenie, esli bit tochnei ne moio a voobshe prinatoe programistami?


 
Игорь Шевченко ©   (2004-12-14 12:54) [11]


> Стики и гл.форма должны быть независимыми


Родительким окном у "стиков" должен быть рабочий стол.


 
Stepan   (2004-12-14 13:30) [12]

Подскажите, как сделать у создаваемой формы родительское окно  - Desktop.

GetDesktopWindow - возвр. HWND
а TForm2.Create требует Component

как быть ?


 
DiamondShark ©   (2004-12-14 14:04) [13]


> Подскажите, как сделать у создаваемой формы родительское
> окно  - Desktop.

Перекрыть CreateParams



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

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

Наверх




Память: 0.5 MB
Время: 0.295 c
3-1105095761
banderas
2005-01-07 14:02
2005.02.06
Создание базы


1-1106313648
Tack
2005-01-21 16:20
2005.02.06
Как получить системный шрифт Windows?


14-1106152158
OneFragLeft
2005-01-19 19:29
2005.02.06
Текст под мышом в RichEdit, например.


6-1101039444
Vasiliy
2004-11-21 15:17
2005.02.06
CGI и Delphi


1-1106652247
viola
2005-01-25 14:24
2005.02.06
Атрибут заголовка StringFGrid