Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];

Вниз

продолжение работы программы после нажатия клавиши   Найти похожие ветки 

 
abajun   (2009-11-13 19:53) [0]

Привет всем! У меня следующий вопрос: как сделать так, чтобы программа в определенном месте останавливалась и ждала ответа пользователя, например, нажатия на пробел или ввод.
Заранее спасибо.


 
intlex   (2009-11-13 20:17) [1]


> abajun   (13.11.09 19:53)

смотря какой интерфейс программы используется,
в консольной, например, процедурой Readln,
если интерфейс графический (с VCL), то выводом окна сообщения ShowWindow

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


 
abajun   (2009-11-13 20:55) [2]

У меня интерфейс графический, не консольный. И многопотоковости нет.
А можно без окна сообщения? То есть типа следующего: на компоненте Chart рисуется график, но не сразу, а последовательно - после каждого нажатия клавиши на клавиатуре дорисовается еще часть (новый точки добавляются).


 
intlex   (2009-11-13 21:03) [3]

а рисуешь как, в цикле?
если да, тогда можно сделать следующую проверку c помощью функции
GetKeyboardState или что-то подобное


 
intlex   (2009-11-13 21:13) [4]

например, пока не нажата кнопка Enter ждем:

var state: TKeyboardState;
...
repeat
 Application.ProcessMessages;
 GetKeyboardState(state);
until ((state[VK_RETURN] and 128) <> 0);
...


 
abajun   (2009-11-13 21:15) [5]

Рисую в цикле. Вернее в одном из методов класса есть цикл, внутри которого вызывается процедура print, и вот в ней все и рисуется. Что-то мой делфи пишет, что он не знает что эта за функция GetKeyboardState, то есть в хелпе ее нет.


 
intlex   (2009-11-13 21:21) [6]

подключи unit Windows, в делфи 5-7 он есть, а есть ли в старших версиях - не знаю


 
abajun   (2009-11-13 21:35) [7]

Это получается, что цикл работает, а как только нажата Enter он останавливается. А мне наоборот - выполняется процедура, а посередине работа должна прикратиться. А потом, как только нажимается enter - продолжается до того же места и снова ждет нажатия. И это в цикле. А он останавливается по другому критерию. Вот.


 
intlex   (2009-11-13 21:47) [8]

вместо <> поставить =


 
intlex   (2009-11-13 21:48) [9]

странно, у меня работает этот пример)


 
intlex   (2009-11-13 21:53) [10]

вот попробуй

var state: TKeyboardState;
...
repeat
Application.ProcessMessages;
GetKeyboardState(state);
until ((state[VK_RETURN] and 128) <> 0);
state[VK_RETURN] := 0;
SetKeyboardState(state);


 
abajun   (2009-11-13 22:00) [11]

Что-то совсем плохо, сделала так:
 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 22:32) [12]

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:50) [13]

Пробовала - работает неправильно - после нажатия на ввод for начинает сначала (i = 0), то есть все время рисуется одна и та же точка.


 
intlex   (2009-11-13 23:00) [14]

если есть желание, то мне на мыло можно переслать текст проги, я посмотрю


 
Leonid Troyanovsky ©   (2009-11-14 00:08) [15]


> abajun   (13.11.09 19:53)  

> программа в определенном месте останавливалась и ждала ответа
> пользователя, например, нажатия на пробел или ввод.

Покажи ему в оном месте диалог.
ShowMessage, MessageBox or ShowModa.

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1256845098
koha!
2009-10-29 22:38
2010.01.03
Упал Linux


2-1257856327
Nutz
2009-11-10 15:32
2010.01.03
Delphi + ZipForge (out of memory)


2-1258012123
SkyN
2009-11-12 10:48
2010.01.03
как определить, делится ли одно Double на другое Double нацело.


1-1232385856
Илья_
2009-01-19 20:24
2010.01.03
Рисование картинки из ImageList методом StrechDraw


2-1258024266
webpauk
2009-11-12 14:11
2010.01.03
Подогнать размер RichEdit в зависимости от шрифта и кол-ва строк





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский