Форум: "Начинающим";
Текущий архив: 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