![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вставлять текст в (rich)edit с задержкой времени
mpdasa © (2012-06-27 09:49:00)У меня такая программа. Из текстового файла загружаю санскритско-английский словарь (в richedit, он невидим).
Потом с помощью комманды copy в левое окошко копирую санскритское слово, а в правое английский перевод.
И всё это у меня циркулирует в Timer.
Так вот, хочеться, чтобы после того, как в левом окошке появилось санскритское слово, была задержка времени перед вставкой перевода, чтобы я мог попробовать отгадать перевод.
Я пробовал команду sleep(2000); Не помогает, задержка происходит для всей формы.
Попробовал по-другому. Вставку в правое окно вынес в отдельную кнопку. И эту кнопку взял в Timer, выставил задержку времени. Тоже работает для всей формы а не для отдельной кнопки.
Почему так? Как решить эту задачку?
AV (2012-06-27 10:25:00) [1]как вариант
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
procedure SleepEx2(M: integer);
end;
var
Form1: TForm1;
A: array [0..1] of string = ('Âàñÿ', 'Êîëÿ');
B: array [0..1] of string = ('ßâàñ', 'ßëîê');
implementation
{$R *.dfm}
procedure TForm1.SleepEx2(M: integer);
var
i: Integer;
begin
i := 0;
repeat
i := i + 1;
Sleep(100);
Application.HandleMessage;
until i > M
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
Timer1.Enabled := False;
for i := 0 to 1 do
begin
Edit2.Text := '';
Edit1.Text := A[i];
Edit1.Repaint;
SleepEx2(10);
Edit2.Text := B[i];
Edit2.Repaint;
SleepEx2(10);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
И. Павел (2012-06-27 10:01:00) [2]Сделайте один таймер. Добавьте глобальную переменную (или член класса формы) например, isEnglish: boolean = false;
В обработчике события таймера смотрите: если isEnglish = true, то выводите английское слово, если false то на санскрите. В конце обработчика пишите isEnglish := not isEnglish (чтобы при следующем срабатывании таймера выводилось другое слово).