Форум: "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.052 c