Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2017, 14:16   #1
Spq
Пользователь
 
Регистрация: 02.02.2017
Сообщений: 13
По умолчанию Смена текста у кнопки

Помогите написать код, который бы менял текст у кнопки на тест1 тест2 тест3. Нужно это сделать через таймер, а не тупо 3 раза на кнопку)
Spq вне форума Ответить с цитированием
Старый 02.02.2017, 14:41   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

"тупо" пишем в событии(event) для таймера (OnTimer)
Код:
     if MyButton.Caption ='тест1' then MyButton.Caption:='тест2'
else if MyButton.Caption ='тест2' then MyButton.Caption:='тест3'
else                                   MyButton.Caption:='ну сколько можно!';
"неожиданно" выясняется что вообще-то таких заголовков может быть много
Код:
const myCaption: array[0..100] of string = ('тест1', 'тест2', 'тест3', ...);

k:=Mybutton.tag +1;
if k<high(MyBytton) then begin
  Mybutton.Caption:=myCaption[k];
  MyButton.Tag:=k;
end
else 
  Mybutton.Caption:='ну сколько можно!!!';
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.02.2017 в 14:46.
evg_m вне форума Ответить с цитированием
Старый 02.02.2017, 15:13   #3
Spq
Пользователь
 
Регистрация: 02.02.2017
Сообщений: 13
По умолчанию

Не ну вы конечно вообще профессор, не спорю, но чейта при компиляции кода у меня кнопка сама меняет название? Я главный этого приложения, а значит я должен решать когда Ей начать менять названия. В данном случае я хочу чтобы по нажатию на кнопку она менялась, а не сама. (один раз нажал на кнопку и начал работать таймер. Чтобы вы не подумали что я противоречу себе же!!!)
Spq вне форума Ответить с цитированием
Старый 02.02.2017, 15:46   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
но чейта при компиляции кода у меня кнопка сама меняет название?
так значить НЕ НАДО запускать таймер сразу при старте приложения.
в ObjectInspector для таймера
Enabled надо False.

Цитата:
(один раз нажал на кнопку и начал работать таймер.
а вот когда "нажмете" (Onclick) кнопку, тогда и запустите.
Код:
timer.Enabled:=true;
а чтобы ЕЩЕ раз не нажать, то здесь же
Код:
StartButton.Enabled:=false; //заблокировать
и/или
StartButton.Visible:=false; // спрятать
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.02.2017, 16:04   #5
Spq
Пользователь
 
Регистрация: 02.02.2017
Сообщений: 13
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
так значить НЕ НАДО запускать таймер сразу при старте приложения.
в ObjectInspector для таймера
Enabled надо False.


а вот когда "нажмете" (Onclick) кнопку, тогда и запустите.
Код:
timer.Enabled:=true;
а чтобы ЕЩЕ раз не нажать, то здесь же
Код:
StartButton.Enabled:=false; //заблокировать
и/или
StartButton.Visible:=false; // спрятать
.
Всё понял! У меня просто ещё помимо самой кнопки работает progressbar:

Код:
Progressbar1.Position:=0; у кнопки
Код:
 у таймера

If Progressbar1.Position < Progressbar1.max then 
Progressbar1.Position:=progressbar.Position+1
else
begin
Timer1.enabled:=false;
Как можно совместить это, пока проходит прогрессбар, пишется надпись о загрузке в самой кнопке (как вы написали код выше) и как только прогрессбар дошёл до конца, вылезает

showmessage('готово'); ну или у кнопки той же.

(пишу с теляфонуса в такой глуши. Так одиноко, делать нечего, на ноутбуке только делфи и пасьянс косынка которую я уже терпеть не могу!!1 извините если что не так!)
Spq вне форума Ответить с цитированием
Старый 02.02.2017, 16:28   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
У меня просто ещё помимо самой кнопки работает progressbar:
т.е. просто отключать таймер на старте не получается.

отключаем обновление кнопок у самой кнопки (в предположении использования второго варианта с массивом).
ObjectInspector
Tag ставим число заведомо превышающее размер массива пусть это будет 9999.

тогда
1. на кнопке "запуска" (Onclick)
Код:
  MyButton.tag:=0; //сбрасываем "флаг блокировки"
2. в таймере (OnTimer)
Код:
if MyButton.tag =9999 {наше волшебное число} then // да-да именно так в ветке then НИКАКИХ действий
else begin
  // ну а здесь все как было
end;
или проще
Код:
if MyButton.Tag<>9999 then begin
// меняем текст кнопки 
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.02.2017 в 16:30.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена текста в элементе через 5 сек samouelson JavaScript, Ajax 2 03.04.2016 20:27
Visual C++/WinForms смена фона кнопки trustguy Windows Forms 0 16.06.2015 07:48
Смена текста при нажатии на кнопку. Anorions JavaScript, Ajax 3 25.09.2014 21:05
смена картинок и текста в окне YaDenis C# (си шарп) 1 16.05.2013 15:37
Смена текста по клику на заголовок Иванна JavaScript, Ajax 4 09.02.2011 07:54