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

Вниз

Всплывающее окно   Найти похожие ветки 

 
Zeqfreed ©   (2004-12-20 17:52) [0]

Здравствуйте, у меня такая проблема. Мне в программе необходимо сделать всплывающее окно с дополнительной информацией, которое должно само исчезать через некоторое время. Я реализовал это пока так: эти окном служит форма (не главная), на ней 2 таймера. Один каждые 250 мс помещает ей на передний план (fsStayOnTop не работает), а второй срабатывает через определенный интервал и закрывает форму. Ессно, при  таком раскладе, во время того как это окошко показывается с остальными работать неаозможно без затруднений; например, кликая по иконке моего приложения в трее появляется и тут же исчезает меню.

Вот, в общем-то и проблема. Вопрос в том, как можно нормально реализовать то, что мне нужно? В частности, хотя бы как заставить fsStayOnTop работать? Что посоветуете, мастера?


 
DVM ©   (2004-12-20 17:59) [1]


> Что посоветуете,

SetWindowPos()


 
Zeqfreed ©   (2004-12-20 18:07) [2]

DVM ©   (20.12.04 17:59) [1]

Спасибо! никогда бы не догадался что её используют в таких случаях ))


 
DVM ©   (2004-12-20 19:06) [3]

Именно в таких случаях и используют. И еще WM_WINDOWPOSCHANGING в придачу. Смотрите внимательно флаги.


 
Zeqfreed ©   (2004-12-20 20:50) [4]

Эх, блин. С начала у меня все получилось. Но потом я исправил код, и все перестало работать, вернуть то что было, к сожалению не могу =(. Если не трудно, подскажите, пожалуйста, правельную последовательность выполнения необходимых действий для выполнения задачи! Что-то я с WM_WINDOWPOSCHANGING не могу разобраться.


 
_snake_ ©   (2004-12-20 21:44) [5]

А вот эта строчка поможет реализовать анолог StayOnTop
SetWindowPos(self.Handle , HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)


 
Zeqfreed ©   (2004-12-20 22:11) [6]

В простейшем приложении (2 формы, 1 кнопка на первой форме меняет Visible второй) эта строка работает (работала и когда я только попробовал её написать первый раз). Потом я сделал изменения, как уже упомянул, и эта строка теперь не действует. Не могли бы вы перечислить причины, по которым такая строка может потерять силу? из-за каких действий с формами?


 
DVM ©   (2004-12-20 22:17) [7]

"потерять силу" строка может только в одном случае - есть обработчик WM_WINDWPOSCHANGING :)
Подробнее написать сейчас не могу - крайне неудобно писать на PocketPC


 
Zeqfreed ©   (2004-12-20 22:20) [8]

А всякие BringToFront и вызовы SetWindowsPos с другими параметрами?


 
DVM ©   (2004-12-20 22:42) [9]

естесстенно повторные вызовы setwindowpos с другими параметрами могут испортить нужное поведение окна.
Короче, завтра напишу как надо сделать.


 
Zeqfreed ©   (2004-12-20 22:51) [10]

Фуф, вроде рахобрался. Сделал так:

...

private
procedure WMWINDOWPOSCHANGING(var Msg : TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;


...

procedure TfrmNotify.FormCreate(Sender: TObject);
begin
SetWindowPos(self.Handle , HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
end;


...

procedure frmNotify.WMWINDOWPOSCHANGING(var Msg : TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;
begin
Msg.WindowPos^.flags := Msg.WindowPos^.flags + SWP_NOZORDER;
end;


 
DVM ©   (2004-12-20 22:57) [11]

абсолютно то же я и имел в виду.


 
Zeqfreed ©   (2004-12-21 13:44) [12]

DVM ©   (20.12.04 22:57) [11]
Да, спасибо, большое, что подопнули меня к цели ;)



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

Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.534 c
1-1103632637
Никита
2004-12-21 15:37
2005.01.09
Как запаковать архив в exe шник?


8-1094910306
InfMag
2004-09-11 17:45
2005.01.09
Проблема с проигрыванием видео файлов


1-1103711338
runa
2004-12-22 13:28
2005.01.09
Как используется TAction


14-1103631558
Vaitek
2004-12-21 15:19
2005.01.09
Ааа вот вы где все!


14-1103617283
Prohodil Mimo
2004-12-21 11:21
2005.01.09
Где найти прогу для IR-пульта?





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