С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 15.11.2017
Сообщений: 6

Несколько кликов на кнопку

19.04.2019, 20:09. Показов 2511. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в Delphi сделать так чтобы: кликаешь к примеру на кнопку 5 раз, и на 5-й раз к происходит какое-то действие, к примеру меняется Caption в Label
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2019, 20:09
Ответы с готовыми решениями:

Несколько кликов с разными событиями при нажатии на кнопку
Код я подсократил могут существовать некие ошибки потому что часть кода взята из частичного представления... <script...

Счетчик кликов на кнопку
Здравствуйте ув. форумчане! Не знаю как правильно сформулировать, но нужно следующее: есть сайт с кнопками-ссылками на группы в соц. сетях....

Счетчик кликов на кнопку Ajax php
Всем привет! Есть кнопка <button>, при клике по ней выполняется php скрипт и значение из него считывается и выводится под кнопкой ...

24
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
19.04.2019, 22:26
Лучший ответ Сообщение было отмечено RedEx0 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
  Form1: TForm1;
  k:integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
k:=k+1;
if k=5 then Label1.Caption:='Это 5 нажатие'
end;
1
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,250
19.04.2019, 22:32
RedEx0, на форме метка и кнопка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  Form1: TForm1;
  count:Integer; //глобальная переменная
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormShow(Sender: TObject);
begin
Label1.Caption :='МЕТКА появилась!!';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(count);
if count mod 5 = 0 then label1.Visible :=not Label1.Visible;
 
end;
 
end.
В этом примере следите за поведением метки на каждый 5-й клик кнопки. Тогда поймете суть.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
19.04.2019, 22:54
Цитата Сообщение от droider Посмотреть сообщение
Delphi
1
inc(count); if count mod 5 = 0 then
с одной поры я так больше не делаю, по той самой причине, что произойдет при переполнении переменной))) конечно, для тестовых проектов инт длинный и "бесконечный" но в реальных проектах, этот случай частый ограничить надо переменную в близи переполнения))

ну это так, из йопыта)
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 16:37
а я слышал что глобальные переменные не стоит плодить

Delphi
1
2
3
4
5
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Tag:=Button1.Tag+1;
  if Button1.Tag=5 then Label1.Caption:='Это 5 нажатие'
end;
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 22:04
Цитата Сообщение от mac1eod Посмотреть сообщение
а я слышал что глобальные переменные не стоит плодить
и правильно, если у нас ООП уже есть, тогда можно сделать переменную полем класса и не извращаться с тегом, в который запихивать пытаются много чего и потом выковырять толком не в силах.. а свое поле завести для прямого назначения и метод который будет отрабатывать нужное - прям вера не позволяет
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 22:41
Цитата Сообщение от Arcor Посмотреть сообщение
в который запихивать пытаются много чего
например? вы часто пользуетесь этим свойством?
у меня не разу не было ситуации, когда бы я хотел им воспользоваться, но оно уже было под что то приспособлено.
а для целей ТС - оно подходит идеально
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 22:52
Цитата Сообщение от mac1eod Посмотреть сообщение
например? вы часто пользуетесь этим свойством?
и зачем мне им пользоваться?! если выше написал... я просто на форуме уже давно и насмотрелся много чего и из этого много чего, даже научился: как надо, а как не надо вовсе..
Цитата Сообщение от Arcor Посмотреть сообщение
и правильно, если у нас ООП уже есть, тогда можно сделать переменную полем класса и не извращаться с тегом, в который запихивать пытаются много чего и потом выковырять толком не в силах.. а свое поле завести для прямого назначения и метод который будет отрабатывать нужное - прям вера не позволяет
я вообще стараюсь не пользоваться компонентами и ими свойствами, простейший интерфейс - это выйгрыш. Вместо чтобы лепить говно и красиво упаковывать)) я пишу стабильную прогу с минимумом интерфейса. В ходу только стандартные штук 10 компонентов... остальное все классами и внедрениями, набросать компонентов на форму и как-то логику написать используюя компоненты - это не программирование, а чистой воды геморрой к сожалению это начинаешь понимать не сразу, все мы бы учениками
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 23:07
Arcor, согласен с вами на 99%
но все же каждый случай индивидуален - конкретно этот не требует написания потомка tbutton ради одного поля, которое будет хранить число
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:13
Цитата Сообщение от mac1eod Посмотреть сообщение
Arcor, согласен с вами на 99%
но все же каждый случай индивидуален - конкретно этот не требует написания потомка tbutton ради одного поля, которое будет хранить число
а тут вот на 100% не согласен...
если тут собрать 85% кода с этого форума, который выдают как решение, то получится свалка говнокода, а именно - как делать не надо))) потому что делается именно с этой вот формулировкой - "ай да и так сойдет... случай простой... чо тут напрягаться то"... правильно Крапоткин в каком-то сообщении сказал - лучше научить как делать ПРАВИЛЬНО, как не правильно даже и показывать не надо, плохо и само получится
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 23:16
Arcor, то есть вы настаиваете на том, что нужно писать потомка tbutton, даже если свойство tag нигде более не используется?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:32
Цитата Сообщение от mac1eod Посмотреть сообщение
Arcor, то есть вы настаиваете на том, что нужно писать потомка tbutton, даже если свойство tag нигде более не используется?
мне все равно как Вы в свои программы это внедрите
говрю же, из опыта... следующий шаг будет - сохранить еще какое-то состояние... да и к тому же осмысленное название будет...

Добавлено через 12 минут
вот обычная практика...

создаем тупой класс

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  TMyButton = class(TButton)
    private
      FCounter: Integer;
      FOnFifthClick: TNotifyEvent;
 
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
      procedure Click; override;
      property OnFifthClick: TNotifyEvent read FOnFifthClick write FOnFifthClick;
  end;
 
  TButton = class(TMyButton);
 
...
 
constructor TMyButton.Create(AOwner: TComponent);
begin
  inherited;
 
  FCounter := 0;
end;
 
destructor TMyButton.Destroy;
begin
  inherited;
end;
 
procedure TMyButton.Click;
begin
  FCounter := FCounter + 1;
  if (FCounter >= 5)and Assigned(FOnFifthClick) then
    begin
      FCounter := 0;
      FOnFifthClick(Self);
    end;
end;
обычная форма...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    procedure OnFifeClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;
 
...
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.OnFifthClick := OnFifeClick;
end;
 
procedure TForm1.OnFifeClick(Sender: TObject);
begin
  ShowMessage('I am fifth click...');
end;

угадайте что произойдет с обычной кнопкой брошеной на форму... да хоть 500 кнопок кинуть у всех будет умение реагировать на пятый клик)))) писал пример около четырех минут, напишите мне с использоанием ваших тегов такую динамику для любой кнопки...
1
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 23:36
писал меньше минуты
Delphi
1
2
3
4
5
procedure TForm1.Button1Click(Sender: TObject);
begin
  (Sender as TButton).Tag:=(Sender as TButton)+1;
  if (Sender as TButton).Tag=5 then Label1.Caption:='Это 5 нажатие'
end;
Добавлено через 40 секунд
Цитата Сообщение от Arcor Посмотреть сообщение
хоть 500 кнопок кинуть
а у ТС по моему только одна кнопка
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:39
Цитата Сообщение от mac1eod Посмотреть сообщение
писал меньше минуты
удачи вам в будещем, товарисчь "программист"))))) вам не понять, что вам хотят донести видимо, ну и ладно, говнокодьте далее
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 23:40
Цитата Сообщение от Arcor Посмотреть сообщение
говнокодьте далее
можно, да?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:43
Цитата Сообщение от mac1eod Посмотреть сообщение
можно, да?
конечно можно - меньше конкурентов, больше работы и зарплаты хотя нам с вами точно не конкурентничать, мы явно географически очень далеко друг от друга, работу уж точно делить не будем, хотябы по этой причине
0
20.04.2019, 23:45

Не по теме:

Цитата Сообщение от Arcor Посмотреть сообщение
больше работы и зарплаты
утешайте себя этим

0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:46
Цитата Сообщение от mac1eod Посмотреть сообщение
Sender as TButton
кстати то... а если Sender окажется не TButton и прилетит крит ой ой ой что ж будет, опасная операция при работе с указателями..., в реальных проектах это ведет в 95% случаев к криту - проверено

подсказка: Там не хватает самой важной части перед этим действием
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
20.04.2019, 23:50
Arcor, вы же мне разрешилили писать говнокод и передавать обработчикам событий что попало в параметры?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
20.04.2019, 23:52
Цитата Сообщение от mac1eod Посмотреть сообщение
Arcor, вы же мне разрешилили писать говнокод и передавать обработчикам событий что попало в параметры?
я не хочу чтобы на эти грабли наступали будущие, возможно, которых еще спасти можно, программеры будущие... а вы в своих проектах говнокодьте) и хватит ныть уже... учатся на ошибках, а если не умешь принимать ошибки - то не научишься...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2019, 23:52
Помогаю со студенческими работами здесь

Часы в несколько кликов с использованием TChart
Помещаем на форму компонент TChart (вкладка TeeChart), выставляем (желательно, но не обязательно) свойство Align чарта в alClient, создаем...

QMouseEvent, Как реализовать несколько кликов подряд?
Есть функция void Previewer::virtualClick(int x, int y) { QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(x,y),...

Приложение, написанное на Дельфи, работает, но закрывается через несколько кликов
кто может помочь? загрузил созданное на дельфи приложение на андроид, работает, но через несколько кликов закрывается. почему?

c#, windows form application. нажатие на кнопку меняет её цвет фона и номер(по кол-ву кликов)
срочно нужна помощь!!(( пожалуйста помогите сделать так, чтобы нажатие на кнопки меняла её цвет фона(каждый клик, разный цвет) и...

Устанавливаются программы, раз в несколько кликов в новых вкладках и новых окнах появляется реклама
Добрый день! Опускаются руки. При каждом запуске компьютера начинается установка программ начиная с Anyprotect. Каждый раз заново...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru