Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для visokii
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
Builder 6

События формы С++ Builder

06.07.2018, 02:38. Показов 1576. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста! Можно ли организовать собственное событие формы по типу OnClick? Только возникающее при клике на любой Button или ChekBox в форме.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2018, 02:38
Ответы с готовыми решениями:

Synchronize() и события формы
доброго времени суток. пишу чеккер проксей, столкнулся с такой проблемой... есть главный поток в котором ессно есть своя форма. в...

События при создании формы
Доброго времени суток, не могу разобраться с событиями Form5->ShowModal(); Form5->mode=true; mode- моя булевая переменная для...

События при создании формы
Доброго дня, хочу выровнять столбцы в StringGrid StringGrid1->ColWidths=Form3->Width-120; StringGrid1->ColWidths=60; ...

13
Модератор
 Аватар для D1973
9910 / 6447 / 2455
Регистрация: 21.01.2014
Сообщений: 27,371
Записей в блоге: 3
06.07.2018, 07:08
Цитата Сообщение от visokii Посмотреть сообщение
собственное событие формы ... возникающее при клике на любой Button
Если кликаем по кнопке то:
1. При чем тут событие формы?
2. В любом случае при клике мышом наступает событие OnClick... А уж как Вы этот клик обрабатывать будете - это совсем другой вопрос, который Вам еще предстоит сформулировать.
0
Злостный нарушитель
 Аватар для Verevkin
10278 / 5702 / 1266
Регистрация: 12.03.2015
Сообщений: 26,413
06.07.2018, 09:33
TActionList юзай.

0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
06.07.2018, 12:33
Цитата Сообщение от visokii Посмотреть сообщение
возникающее при клике на любой Button или ChekBox
Легко! Выбираете понравившуюся кнопку и на ее событие OnClick выписываете такие, к примеру, строчки__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(Sender->ClassNameIs("TCheckBox"))
   {  if(((TCheckBox*)Sender)->Name=="CheckBox1")
       ((TCheckBox*)Sender)->Caption="ChikBoks1";
      if(((TCheckBox*)Sender)->Name=="CheckBox2")
       ((TCheckBox*)Sender)->Caption="ChikBoks2";
   }
    if(Sender->ClassNameIs("TButton"))
   {  if(((TButton*)Sender)->Name=="Button1")
       ShowMessage("Push btn1!");
      if(((TButton*)Sender)->Name=="Button2")
       ShowMessage("Push btn2!");
   }
}
А затем по очереди (или скопом) выбираете те другие компоненты и в Object Inspector'е в событиях (Events) присваиваете (в выпадающем меню) им только что написанный обработчик - Button1Click().
1
 Аватар для visokii
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
06.07.2018, 18:16  [ТС]
Дело в том, что на форме, кнопок около 50 шт, нужно обработать, как раз, клик на любую. Думал что может есть что-то стандартное, если они все находятся на одной форме. Так я уже заморочился каждый OnClick прописал.)))

Добавлено через 1 час 2 минуты
ActionList лист это хорошо. Да, несколько кнопок делают одно и тоже, это здорово. Но проблема в том, что они перестают делать то, что для них изначально назначено. Может это можно как-то исправить?
0
Злостный нарушитель
 Аватар для Verevkin
10278 / 5702 / 1266
Регистрация: 12.03.2015
Сообщений: 26,413
06.07.2018, 18:26
Цитата Сообщение от visokii Посмотреть сообщение
Но проблема в том, что они перестают делать то, что для них изначально назначено. Может это можно как-то исправить?
Кусок исходника на delphi (в данном случае это не принципиально) - один обработчик для нескольких кнопок/пунктов меню:
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
procedure TFormMain.ActionSettingsExecute(Sender: TObject);
var
  cmp: TComponent absolute Sender;
  ct: TTimeouts;
begin
  // меню "Настройка"
  case cmp.Tag of
   // настройка порта
    0: PortSetupDlg(FEngine.Port); //ComPort.ShowSetupDialog();
 
   // настройка таймаутов RS-232
    1: begin
         ct:= FEngine.Port.TimeOuts;
         if ChangePortTimeouts(ct)
           then FEngine.Port.TimeOuts:= ct;
       end;
 
   // шрифт лога
   10: GlobalLogHelper.DefaultFont:=
         SelectFont(GlobalLogHelper.DefaultFont,
                    'Шрифт протокола по умолчанию');
 
   // фон лога
   11: GlobalLogHelper.DefaultBackground:=
         SelectColor(GlobalLogHelper.DefaultBackground,
                     [cdFullOpen],
                     'Фон области протокола');
 
    // параметры лога
    12: LogSetupDlg(GlobalLogHelper);
  else ActionNotRealized(Sender);
  end;
end;
1
 Аватар для visokii
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
06.07.2018, 18:40  [ТС]
Короче сделал проще. Написал отдельную функцию Function()


C++
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    //
    // выполнение своих действий
    //
    Function();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    //
    // выполнение своих действий
    //
    Function();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    //
    // выполнение своих действий
    //
    Function();
}
//---------------------------------------------------------------------------
 
 
void TForm1::Function() 
{
    // была нажата какая-то клавиша!!! 
}
Добавлено через 13 минут
Verevkin, тоже с rs232 морочишься? ))))))))) Я как раз прогу для управления Arduino через COM порт пишу. Вот эти 50 кнопок с чекбоксами как раз ею и управляют.

Добавлено через 27 секунд
Ребята огромное спасибо всем.
0
Злостный нарушитель
 Аватар для Verevkin
10278 / 5702 / 1266
Регистрация: 12.03.2015
Сообщений: 26,413
06.07.2018, 19:03
Цитата Сообщение от visokii Посмотреть сообщение
Verevkin, тоже с rs232 морочишься?
Почему морочусь? Ничуть не морочусь, интерфейс прекрасно работает, причём асинхронно и без участия модемных линий.
Цитата Сообщение от visokii Посмотреть сообщение
Вот эти 50 кнопок с чекбоксами как раз ею и управляют.
Даже страшно спрашивать скриншот. 50 кнопок, имхо, это жэсть.
0
 Аватар для visokii
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
06.07.2018, 19:26  [ТС]
Подсокротил, уже количество.))) Часть вынес на другие формы.

https://www.cyberforum.ru/atta... 1530893671

Я с её помощью уже вычислил битые участки памяти в некоторых микроконтроллерах PIC. Коих у меня завалялось довольно много с одной из предыдущих работ. Заморочился с Arduino, так как экстрапики, JDM и прочее не имею возможности подключить. Переходники USB -> COM не годятся ни на что. Был у меня один нормальный и тот "взяли на время".
Миниатюры
События формы С++ Builder  
0
Злостный нарушитель
 Аватар для Verevkin
10278 / 5702 / 1266
Регистрация: 12.03.2015
Сообщений: 26,413
06.07.2018, 19:35
Цитата Сообщение от visokii Посмотреть сообщение
Переходники USB -> COM не годятся ни на что. Был у меня один нормальный и тот "взяли на время".
У меня их 6 штук, 2 куплены в местном магазе, остальные - в разные годы приехали из китая. Прекрасно работают и те, и эти.
Цитата Сообщение от visokii Посмотреть сообщение
Подсокротил, уже количество.))) Часть вынес на другие формы.
Ну, я не знаю. У меня очередная прога для настройки и управления внешним девайсом. Кнопками не злоупотребляю. Выглядит пока вот так (но это технический вид, не обращай внимания):
0
 Аватар для visokii
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
06.07.2018, 19:49  [ТС]
Да вот я тоже хочу в итоге сократить до читать, писать, проверить.)))) Просто сложно сразу. Никогда этим не занимался. И алгоритмы программирования у микросхем разные. Пока даташит изучишь пока подберешь как к нему подход найти и т. д.
0
Злостный нарушитель
 Аватар для Verevkin
10278 / 5702 / 1266
Регистрация: 12.03.2015
Сообщений: 26,413
06.07.2018, 19:55
Цитата Сообщение от visokii Посмотреть сообщение
И алгоритмы программирования у микросхем разные. Пока даташит изучишь пока подберешь как к нему подход найти и т. д.
У меня этим другой чел занимается (вернее, их двое: железячник и программёр прошивочный). А я пишу только программы управления, мне без разницы, чо у меня на том конце кабеля: я выдаю команды, получаю ответы, расшифровываю, проверяю и т.д.
0
483 / 275 / 57
Регистрация: 08.10.2015
Сообщений: 1,184
15.07.2018, 06:08
Для всех (50, 1000, ....) кнопок есть одно событие, например
C++
1
void __fastcall TForm1::sButtonClick(TObject *Sender)
проставляете в Инспекторе для кнопок Tag в необходимой (удобной) последовательности.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::sButtonClick(TObject *Sender)
{
 TButton *sButton=(TButton*)Sender;//1 
 int a=sButton->Tag;//2         1,2  Если нужно будет, например что-то типа  f(a,b,sButton)    
 
int a=((TButton*)Sender)->Tag;// Если sButton никуда посылать не нужно    
switch Tag
    {
       case  0 : {......}  break;
        ............................       
       case 100: {......}  break;
      default  : {......}  break;
    }   
}
0
15.07.2018, 11:34

Не по теме:

Цитата Сообщение от visokii Посмотреть сообщение
Дело в том, что на форме, кнопок около 50 шт, нужно обработать, как раз, клик на любую. Думал что может есть что-то стандартное, если они все находятся на одной форме. Так я уже заморочился каждый OnClick прописал.)))
Почему я не перестаю удивляться такому быдлокоду.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2018, 11:34
Помогаю со студенческими работами здесь

2 формы в Builder 6
Здравствуйте уважаемые знатоки. Подскажите пож-ста, как мне открыть вторую форму для редактирования и/или как хоть мне убрать крестик в...

Передача события из одной формы в другую
Каким образом можно передать событие из одной формы в другую (в Builder c++)

Реализация формы в C++ Builder
У меня есть написанный код, но мне надо написать простейшую форму в C++ Builder'e: ввод двух элементов по нажатию кнопки, и вывод...

Распечатка формы, в С++ builder 6
Распечатка формы, в С++ builder 6 Ребята, подскажите пожалуйста как распечатать все данные с формы. Вот есть форма, и поиск клиента....

C++ Builder блокировка закрытия формы
Вообщем при открывании формы CanClose=false;void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { CanClose=false;...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru