Всё, я нашёл ответ и на этот вопрос:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Caption:=IntToStr(StrToInt(button1.Caption)-1);
if button1.Caption='0' then timer1.Enabled:=False;
end;
. Единственное, что мне не нравится вообще в делфи (или вообще во всех языках, хотя может я и не прав), что на событие онформкреате операторы процедуры выполняются, но пользователь не может наблюдать за этим. О чём свидетельствует уже не полюбившийся мне sleep. То есть штука
Код:
procedure ....form1create
begin
button1.caption:='ok';
sleep(5000);
end;
. Пользователь не видит форму пока не выполнится слип на 5 сек. А мне охота добится того, чтобы текст на кнопке изменялся в процессе выполнения приложения, не опираясь ни на какие события. То есть появляеться форма, кнопка с надписью "button1" и тут же на ней надпись меняется на "ok". Согласен, на существующих машинах человек не заметит ту долю секунды, когда это выполняется. Чтобы лучше описать вопрос, сравню это с консольным приложением. Пусть дан код
Код:
program project1;
uses
SysUtils;
{$APPTYPE CONSOLE}
var
st : string;
begin
write('st=');
readln(st);
end.
1. Вот в этом коде появляеться чёрненькое окошко. Это я сравниваю с появлением формы, то есть форма видима пользователем.
2. Окно поначалу пусто. Сравниваю с "кнопка имеет надпись "button1"".
3. Печатаеться "st=". Сравниваю с изменением надписи на "ok".
4. Ждёться считывание строки. Сравниваю с "Приложение работает".
Но почему то у меня всегда выходит так, что если сравнивать мой код с консольным приложением, то выходит:
3. печатаеться строка st=
1. ПОТОМ ПОЯВЛЯЕТСЯ само чёрненькое окно
4. Потом считывается строка.
А второго пункта вообще нету. Как-то нелогично.