Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 212

/ вопрос решён /

Добрый день всем!

Topic: Как вставлять текст в (rich)edit с задержкой времени

У меня такая программа. Из текстового файла загружаю санскритско-английский словарь (в richedit, он невидим).
Потом с помощью комманды copy в левое окошко копирую санскритское слово, а в правое английский перевод.
И всё это у меня циркулирует в Timer.

Так вот, хочеться, чтобы после того, как в левом окошке появилось санскритское слово, была задержка времени перед вставкой перевода, чтобы я мог попробовать отгадать перевод.

Я пробовал команду sleep(2000); Не помогает, задержка происходит для всей формы.
Попробовал по-другому. Вставку в правое окно вынес в отдельную кнопку. И эту кнопку взял в Timer, выставил задержку времени. Тоже работает для всей формы а не для отдельной кнопки.
Почему так? Как решить эту задачку?

Приложение:
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3. k_vo_strok_dictionary:=dictionary.Lines.Count;
  4. randomize;
  5.  
  6.  
  7. stroka:=dictionary.Lines[x];
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14. perevod:=copy(stroka, p+2, Dlinna_stroki-p);
  15.  
  16. end;


mpdasa Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: mpdasa (статус: Посетитель)
Вопрос отправлен: 27 июня 2012, 09:40
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 27 июня 2012, 19:51; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 27 июня 2012, 09:54 [#1]:

Цитата (mpdasa):

И эту кнопку взял в Timer, выставил задержку времени. Тоже работает для всей формы а не для отдельной кнопки.

Дай посмотреть обработчики событий OnClick кнопки и OnTimer таймера.

И ещё: какая версия Delphi?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
mpdasa

mpdasa (статус: Посетитель), 27 июня 2012, 12:06 [#2]:

Поэкспериментировал ещё, разобрался.

В кнопке у меня код

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;{эта и следующая строка нужна для синхронизации двух таймеров}
Timer2.Enabled:=false;
RichEdit2.Text:=perevod;//вставляю перевод
end;

Эту кнопку взял в таймер (события.кнопка1.нажатие).

Всё заработало.

Для интересующихся окончательный код в FormShow:

procedure TForm1.FormShow(Sender: TObject);
begin
Timer2.Enabled:=true;
k_vo_strok_dictionary:=dictionary.Lines.Count;
randomize;
x:=random(k_vo_strok_dictionary);//выбераем случайную строку

stroka:=dictionary.Lines[x];
P:=Pos(z_skobka, stroka);{номер символа разделения
санскритского слова и перевода}
san_slovo:=copy(stroka,2,p-2);//копируем сан. слово
RichEdit1.Text:=san_slovo;//вставляем сан. слово
RichEdit2.Text:='';
Dlinna_stroki:=length(stroka);{нужно чтобы
правильно скопировать перевод}
perevod:=copy(stroka, p+2, Dlinna_stroki-p);//копирую перевод
Timer1.Enabled:=false;
end;

27 июня 2012, 12:07: Статус вопроса изменён на решённый (изменил автор вопроса — mpdasa): Сам разобрался

min@y™

min@y™ (статус: Доктор наук), 27 июня 2012, 13:04 [#3]:

А почему всё это безобразие у тебя именно в OnShow находится?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
mpdasa

mpdasa (статус: Посетитель), 27 июня 2012, 13:34 [#4]:

Цитата: А почему всё это безобразие у тебя именно в OnShow находится?
А почему нет, что не так, основные действия происходят на OnShow. 100% работающая прога.
В чём усчербность?

И да, забыл ответить на вопрос для среду.

CodeGear™ RAD Studio 2009 Version 12.0.3170.16989
min@y™

min@y™ (статус: Доктор наук), 27 июня 2012, 13:45 [#5]:

Цитата (mpdasa):

основные действия происходят на OnShow

Потому что все эти действия будут происходить при каждом показе формы.
Да, кстати, убери оттуда Randomize() и перенеси его в OnCreate или в файл проекта перед Application.Run();
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 27 июня 2012, 15:43 [#6]:

Да, и ещё. Выкинь невидимый RichEdit, используй TStringList вместо него.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
mpdasa

mpdasa (статус: Посетитель), 27 июня 2012, 19:20 [#7]:

Цитата: "Да, и ещё. Выкинь невидимый RichEdit, используй TStringList вместо него."

Почитал о TStringList. www.delphibasics.ru/TStringList.php
Действительно полезная штука.
Спасибо.
min@y™

min@y™ (статус: Доктор наук), 27 июня 2012, 19:51 [#8]:

Цитата (mpdasa):

Действительно полезная штука. Спасибо.

Ты даже не представляешь, сколько есть полезных штуковин в стандартных модулях delphi!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:30
Выполнено за 0.02 сек.