Главная страница
    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.046 c
2-1226596493
snake-as
2008-11-13 20:14
2008.12.21
TreeView


15-1224012169
guav
2008-10-14 23:22
2008.12.21
А мужики не знали


2-1226327058
Andrey_ka
2008-11-10 17:24
2008.12.21
работа с памятью


15-1224141876
brother
2008-10-16 11:24
2008.12.21
проблемма с гуглем...


2-1226488773
Andrey_ka
2008-11-12 14:19
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский