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

Вниз

Как заставить одну из форм висеть поверх всех окон 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 вся ветка

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

Наверх





Память: 0.48 MB
Время: 0.037 c
4-1103487107
Stalker_
2004-12-19 23:11
2005.02.06
Автозагрузка


3-1105275140
chir
2005-01-09 15:52
2005.02.06
SQL: UPDATE: Ошибка


9-1098905911
_Дельфин_
2004-10-27 23:38
2005.02.06
OpenGL и 3DSMax


10-1074505745
comwad
2004-01-19 12:49
2005.02.06
Проблемы с идентификатором объекта Corba?


14-1106138020
vajo
2005-01-19 15:33
2005.02.06
Шрифты





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