![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
продолжение работы программы после нажатия клавиши [D7]
abajun © (2009-11-13 19:53:00)Привет всем! У меня следующий вопрос: как сделать так, чтобы программа в определенном месте останавливалась и ждала ответа пользователя, например, нажатия на пробел или ввод.
Заранее спасибо.
Leonid Troyanovsky (2009-11-14 00:08:00) [1]
> abajun (13.11.09 19:53)
> программа в определенном месте останавливалась и ждала ответа
> пользователя, например, нажатия на пробел или ввод.
Покажи ему в оном месте диалог.
ShowMessage, MessageBox or ShowModa.
--
Regards, LVT.
intlex (2009-11-13 23:00:00) [2]если есть желание, то мне на мыло можно переслать текст проги, я посмотрю
abajun (2009-11-13 22:50:00) [3]Пробовала - работает неправильно - после нажатия на ввод for начинает сначала (i = 0), то есть все время рисуется одна и та же точка.
intlex (2009-11-13 22:32:00) [4]for i:= 0 to 15 do begin
Chart1.SeriesList.Series[0].AddXY(i,i*i);
repeat
Application.ProcessMessages;
GetKeyboardState(state);
until (state[VK_RETURN] and 128) <> 0;
state[VK_RETURN] := 0;
SetKeyboardState(state);
end;
а вот так пробовали?
abajun (2009-11-13 22:00:00) [5]Что-то совсем плохо, сделала так:
for i:= 0 to 15 do begin
Chart1.SeriesList.Series[0].AddXY(i,i*i);
Application.ProcessMessages;
GetKeyboardState(state);
if (state[VK_RETURN] and 128) = 0 then continue;
end;
не работает. то есть не работает, как я хочу - чтобы после addxy останавливался и ждал нажатия enter.
intlex (2009-11-13 21:53:00) [6]вот попробуй
var state: TKeyboardState;
...
repeat
Application.ProcessMessages;
GetKeyboardState(state);
until ((state[VK_RETURN] and 128) <> 0);
state[VK_RETURN] := 0;
SetKeyboardState(state);
intlex (2009-11-13 21:48:00) [7]странно, у меня работает этот пример)
intlex (2009-11-13 21:47:00) [8]вместо <> поставить =
abajun (2009-11-13 21:35:00) [9]Это получается, что цикл работает, а как только нажата Enter он останавливается. А мне наоборот - выполняется процедура, а посередине работа должна прикратиться. А потом, как только нажимается enter - продолжается до того же места и снова ждет нажатия. И это в цикле. А он останавливается по другому критерию. Вот.
intlex (2009-11-13 21:21:00) [10]подключи unit Windows, в делфи 5-7 он есть, а есть ли в старших версиях - не знаю
abajun (2009-11-13 21:15:00) [11]Рисую в цикле. Вернее в одном из методов класса есть цикл, внутри которого вызывается процедура print, и вот в ней все и рисуется. Что-то мой делфи пишет, что он не знает что эта за функция GetKeyboardState, то есть в хелпе ее нет.
intlex (2009-11-13 21:13:00) [12]например, пока не нажата кнопка Enter ждем:
var state: TKeyboardState;
...
repeat
Application.ProcessMessages;
GetKeyboardState(state);
until ((state[VK_RETURN] and 128) <> 0);
...
intlex (2009-11-13 21:03:00) [13]а рисуешь как, в цикле?
если да, тогда можно сделать следующую проверку c помощью функции
GetKeyboardStateили что-то подобное
abajun (2009-11-13 20:55:00) [14]У меня интерфейс графический, не консольный. И многопотоковости нет.
А можно без окна сообщения? То есть типа следующего: на компоненте Chart рисуется график, но не сразу, а последовательно - после каждого нажатия клавиши на клавиатуре дорисовается еще часть (новый точки добавляются).
intlex (2009-11-13 20:17:00) [15]
> abajun (13.11.09 19:53)
смотря какой интерфейс программы используется,
в консольной, например, процедурой Readln,
если интерфейс графический (с VCL), то выводом окна сообщения ShowWindow
я так понимаю, что речи о многопотоковости пока не идет)