Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

продолжение работы программы после нажатия клавиши [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

я так понимаю, что речи о многопотоковости пока не идет)


Наверх

Титульная страница Поиск, карта сайта Написать письмо