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

Вниз

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

 
VitGun   (2008-11-09 11:00) [0]

В приложении необходимо показать всплывающее окошко (как в qip). сию проблему решил при помощи стороннего компонента KMAlert, но у меня может быть несколько событий которые нужно показать. Пробовал так

for i:=0 to num_events-1 do
begin

 KMAlert.PopUp; //это показываем окошко
 ....
end;

но ведь нужно чтобы окошко провисело положенные 5 секунд на экране, а потом показалось следующее. Если вставить sleep(5000), то так оно и происходит, но с приложением ничего нельзя делать. Как быть в этой ситуации и как организовать показ всплывающих окон без заморозки приложения?


 
Сергей М. ©   (2008-11-09 12:06) [1]

На то есть таймер


 
Loginov Dmitry ©   (2008-11-09 12:10) [2]

> Если вставить sleep(5000), то так оно и происходит, но с
> приложением ничего нельзя делать.


Конечно нельзя! Sleep() останавливает поток, пока не пройдет указанное время. При этом окна не могут реагировать на действия пользователя.


> Как быть в этой ситуации и как организовать показ всплывающих
> окон без заморозки приложения?


Есть по крайнем мере 3 варианта (на выбор):
1 - организовать задержку с помощью комбинации Sleep() + Application.ProcessMessages (при этом приложение не будет "тормозить")
2 - использовать компонент TTimer
3 - реализовать логику с использованием дополнительного потока (TThread)


 
VitGun   (2008-11-09 12:11) [3]

в KMAlert свой таймер, т.е компонент сам висит 5 секунд и пропадает. мне нужно показать несколько таких сообщений подряд, каждое с интервалом в 5 секунд и повторять показ с большим интервалом....ну допустим 30 минут. это сделано в таймере, а вот сам показ...прошло 30 минут, начат показ сообщений, данные для сообщений содержатся в таблице, т.е мне в цикле нужно обойти таблицу и вывести данные в всплывающем окне. как сделать это не замораживая приложения?


 
VitGun   (2008-11-09 12:13) [4]

[b]Loginov Dmitry[/b]

1. так работает, но приложение нельзя закрыть пока не прошел показ сообщений
2. получается таймер в таймере?
3. с потоками не работал ниразу. примерчик не подкинете?


 
Loginov Dmitry ©   (2008-11-09 12:15) [5]

> примерчик не подкинете?


примерчик вчера давали к этой же конференции.


 
Loginov Dmitry ©   (2008-11-09 12:17) [6]

> так работает, но приложение нельзя закрыть пока не прошел
> показ сообщений


что межает завести дополнительную логическую переменную, устанавливать ее в True при закрытии окна, а в том цикле проверяеть ее, и если она равна True, то прерывать цикл?


 
Сергей М. ©   (2008-11-09 12:19) [7]


> ведь нужно чтобы окошко провисело положенные 5 секунд


> компонент сам висит 5 секунд


Так а чего ж пыжиться, если он сам это умеет ?


 
{RASkov} ©   (2008-11-09 12:30) [8]

может как-нибудь так:
while i < num_events-1 do
begin
Application.ProcessMessage;
while KMAlert.показывается then Continue; //Есть наверное какое-то свойство такое нужное)
KMAlert.PopUp; //это показываем окошко которое само закроется через 5 сек...
INC(i);
end;


 
VitGun   (2008-11-09 14:11) [9]

Сделал через поток (TThread), как советовал Loginov Dmitry. Все работает. спасибо огромное.



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

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

Наверх





Память: 0.46 MB
Время: 0.036 c
15-1224641568
Slider007
2008-10-22 06:12
2008.12.21
С днем рождения ! 22 октября 2008 среда


2-1226300937
cyborg
2008-11-10 10:08
2008.12.21
Что за ошибка "Отказано в доступе"?


15-1224082835
**Renegat**
2008-10-15 19:00
2008.12.21
Delfi сделать вирус


15-1224751183
int64
2008-10-23 12:39
2008.12.21
Эксперты для IDE Delphi2007


9-1176034915
Tonich
2007-04-08 16:21
2008.12.21
Столкновение объектов в пространстве (шариков)





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