Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
16 / 16 / 9
Регистрация: 16.03.2012
Сообщений: 437
1

ShowMessage или MessageDlg по таймеру

08.06.2012, 17:48. Просмотров 2618. Ответов 2
Метки нет (Все метки)


Добрый вечер!

Пытаюсь сделать программу которая выводит окна ShowMessage и MessageDlg по таймеру.

Идея такова, что при нажатии кнопки, появляется окно сообщения, а затем с заданным интервалом появляются окна сообщений автоматически, не требующие нажатия кнопки Ок или ещё какой-то кнопки.
А когда например появилось 5 окон сообщений, то всё идёт в обратном порядке, т.е. начия с последнего сообщения переходим на первое.

Вот этот пример выводит бесконечное кол-во окон ShowMessage(как ограничить вывод только 5-ю и потом, по таймеру убирать все выведенные окна и вернуться на начальную форму):
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm2.Timer1Timer(Sender: TObject);
var
  h:HWND;
begin
Timer1.Interval:= 5000;
Timer1.Enabled := False;
h := FindWindow('TMessageForm', PChar(Application.Title));
if H <> 0 then SendMessage(H, WM_SYSCOMMAND, SC_Close, 0);
Timer1.Enabled := True;
ShowMessage('Тестовое окно');
end;
А это хоть и как-то работает, но не так (во всяком случае предыдущее сообщение пропадает):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form2.Timer1.Interval:= 4000;
  Form2.Timer1.Enabled:= True;
end;
 
procedure TForm2.Timer1Timer(Sender: TObject);
var
  m: string;
begin
  Form2.Timer1.Interval:= 4000;
  MessageDlg(m,mtInformation,[mbOk],0);
  Form2.Timer1.Enabled:= False;
  MessageDlg(m,mtConfirmation,[mbOk],0);
  Form2.Timer1.Enabled:= True;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2012, 17:48
Ответы с готовыми решениями:

Положение MessageDlg или ShowMessage
Подскажите - есть ли возможность задавать положение сообщений MessageDlg или ShowMessage не по...

Окна ShowMessage, MessageDlg
Приветствую всех! У меня возникла следующая проблема, я заметил, что окна showmessage и messagedlg...

Вывод текста ячейки StringGrid в сообщении ShowMessage или MessageDlg
Добрый вечер! Возможно ли в ShowMessage или MessageDlg вывести значение из ячейки StringGrid!?...

Таймер в WinApi или вызов функций по таймеру
Здравствуйте. Возникла необходимость нарисовать в окне составной график. Однако есть небольшое но:...

2
103 / 103 / 74
Регистрация: 27.05.2009
Сообщений: 201
09.06.2012, 13:20 2
Цитата Сообщение от SlashX6 Посмотреть сообщение
А когда например появилось 5 окон сообщений, то всё идёт в обратном порядке, т.е. начия с последнего сообщения переходим на первое.
объявляем глобальный массив и переменную
Delphi
1
2
 msg:array[1..5] of string=('сообщение 1','сообщение 2','сообщение 3','сообщение 4','сообщение 5');
 msgcount:integer;
пишем
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
msgcount:=1;
end;
и в таймере
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Timer1Timer(Sender: TObject);
var
s:string;
begin
s:=msg[msgcount];
inc(msgcount); if msgcount>5 then msgcount:=1;
showmessage(s);
end;
1
16 / 16 / 9
Регистрация: 16.03.2012
Сообщений: 437
09.06.2012, 16:11  [ТС] 3
Спасибо большое! Я сделал немного по другому правда, но там с первым примером

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm2.Timer1Timer(Sender: TObject);
var
  h:HWND;
begin
Timer1.Interval:= 5000;
Timer1.Enabled := False;
h := FindWindow('TMessageForm', PChar(Application.Title));
if H <> 0 then SendMessage(H, WM_SYSCOMMAND, SC_Close, 0);
Timer1.Enabled := True;
ShowMessage('Тестовое окно');
end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2012, 16:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

А можно по таймеру, или по событию обновлять фрейм?
А можно по таймеру, или по событию обновлять фрейм?

Действие по таймеру выполняется в отдельном или общем потоке
Добрый день! Если я ставлю в программу таймер и на tick вешаю функцию, то будет ли на время...

Как запускать asp-страницу по таймеру ? (в назначенных заданиях или еще где)
Надо, чтобы asp-страница выполнялась через опред. интервалы времени. Как и чем это можно...

MessageDlg
В справке delphi нашел вот такой пример. MessageDlg('Exiting the Delphi application.',...

MessageDlg
Привет, ребята! Подскажите как пользоваться MessageDlg

messagedlg!!
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if messagedlg('Вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.