|
7 / 7 / 0
Регистрация: 06.08.2010
Сообщений: 12
|
||||||
Один обработчик для 100 кнопок?30.03.2011, 00:44. Показов 8965. Ответов 47
Метки нет (Все метки)
На форме есть 100 кнопок.
Как сделать один раз для всех кнопок, чтобы не описывать нажатие для каждой конкретной кнопки сто раз:
1
|
||||||
| 30.03.2011, 00:44 | |
|
Ответы с готовыми решениями:
47
Один обработчик для 9 кнопок Один обработчик для нескольких Image TMainMenu Один обработчик для нескольких пунктов |
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|
| 31.03.2011, 08:38 | |
|
Dersou, я однажды спрашивал и мне ответили тут Обратиться к определенной кнопке и по-моему это как раз то, что Вы ищете. Оттуда можно найти, как в одном событии для всех кнопок, определить какая именно кнопка была нажата.
0
|
|
|
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
|
|
| 31.03.2011, 10:36 | |
|
Если я правильно понял вопроса, то вот
. Так как события TButtonClick имеют один и тот же метод и те же аргументы. Когда заходите в инспекторе объектов в раздел Event, найдите там OnClick, и нажмите на стрелочку и выберите свой метод. И так на всех ста кнопок . Если что я сделал пример.
0
|
|
|
|
|||
| 31.03.2011, 15:16 | |||
, люди, ну читайте же тему от начала , повторяю второй раз - было уже :
0
|
|||
|
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
|
|||
| 31.03.2011, 15:49 | |||
|
0
|
|||
|
7 / 7 / 0
Регистрация: 06.08.2010
Сообщений: 12
|
|||||||
| 01.04.2011, 11:40 [ТС] | |||||||
|
- выделил все кнопки и в событии OnClick() выбрал Action1 ! - для передачи в Action1 значения Button->Tag нарисовал три строчки в Action1
Выражаю отдельную признательность "koldun" за то, что ткнул носом в мной проигнорированное сообщение от "kzru_hunter" Всем спасибо! З.Ы. Про 100 кнопок я, конечно, загибнул, - их всего 24, но был важен сам принцип. Ведь для меня после числа 5 идет "тьма". Путаюсь в цыфирях.
0
|
|||||||
|
|
|
| 01.04.2011, 22:33 | |
|
0
|
|
|
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
|
||||||||
| 01.04.2011, 23:18 | ||||||||
Не заметил сразу...
0
|
||||||||
|
|
||
| 01.04.2011, 23:22 | ||
. Остается надеяться, что со временем это пройдет и у него .
0
|
||
|
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
|
|
| 01.04.2011, 23:29 | |
|
LK, может быть
Но если человек невнимательно читает и игнорирует ответы на свой вопрос в своей же теме, то это как бэ намекает...
0
|
|
|
|
|
| 01.04.2011, 23:31 | |
|
Inadequate, согласен
.
0
|
|
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
|||||||||||
| 02.04.2011, 00:56 | |||||||||||
|
Мне было лень 100 кнопок делать, поэтому ток шестью обошелся
для начала создадим свой обработчик: *.h
*.cpp
0
|
|||||||||||
|
|
||||||
| 02.04.2011, 01:01 | ||||||
|
Gremlin, а фишка в чем ? или это повторение пройденного для закрепления ? и вот это
0
|
||||||
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
|
| 02.04.2011, 01:09 | |
|
LK,
ClassName() - ShortString ClassName().operator AnsiString() - а так уже AnsiString при if(...ClassName() == "TButton") - будет ошибка if(...ClassName().operator AnsiString() == "TButton") - а так нет (приводим ShortString к типу AnsiString)
0
|
|
|
|
||||||
| 02.04.2011, 01:17 | ||||||
|
а
0
|
||||||
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
||||||
| 02.04.2011, 01:20 | ||||||
|
в вашем посте: Один обработчик для 100 кнопок?
допущена критичная ошибка
0
|
||||||
|
|
|
| 02.04.2011, 01:23 | |
|
0
|
|
|
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
|
||||||
| 02.04.2011, 01:30 | ||||||
|
Gremlin, всё верно. Поэтому перед этим нужно проверить что вернет нам dynamic_cast.
LK, мысль проста, как я писал чуть выше dynamic_cast вернет нам либо указатель, либо 0. Так вот если на форме у тебя будет что-то помимо TButton, то т.к. ты забыл сделать проверку что именно вернет dynamic_cast, ты получишь AV. Попробуй кинуть на форму, что-то помимо TButton и проверь свой код. Т.е. сначала неплохо бы удостовериться, что это именно TButton
0
|
||||||
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
|
| 02.04.2011, 01:30 | |
|
LK, пожалуйста:
например такой компонент как MainMenu или TEdit это не TButton и при TButton* button; button = dynamic_cast<TButton*>(Components[i]); будет ошибка так как классы не совпадают без обид, но я это клоню к тому, что не нужно людей вводить в заблуждение это все равно что дать человеку компьютер и ни сказать (что это вообще такое)
0
|
|
|
|
||||||
| 02.04.2011, 01:38 | ||||||
|
ах, вы об этом
? да , запамятовал , но огород-то городить зачем ![]()
0
|
||||||
|
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
|
|
| 02.04.2011, 01:43 | |
|
LK, весьма нерациональное решение. У тебя получится много лишних обходов, кроме того если все создавалось динамически и имена компонентам не присваивались, то останешься в добавок и без результата.
0
|
|
| 02.04.2011, 01:43 | |
|
Помогаю со студенческими работами здесь
40
Один обработчик для нескольких кнопок
Один обработчик событий для нескольких кнопок один обработчик нажатия для всех кнопок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|