Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107

Одна функция для обрабатывания разный однотипных событий

17.11.2010, 01:19. Показов 2447. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня суток,

Недавно начал разбирать c++ builder и на днях наткнулся на проблему которую не получается решить. Более точнее не получается воспроизвести один пример программы написанной на c++ builder из книги Никита Культин "c++ builder в примерах и задачах"

Вот на чем я застал
C++
1
2
3
4
5
6
7
8
9
10
  __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
   /* задать, что событие KeyPress 
    для компонентов Edit2 и Edit3
    обрабатывает функция EditKeyPress */
  
  Edit2->OnKeyPress = EditKeyPress;
  Edit3->OnKeyPress = EditKeyPress;
 
  .......(остальной код)......
}
Проблема возникает когда я пытаюсь скомпилировать этот код, компилятор(CodeGear2009) выдает две ошибки
C++
1
2
[BCC32 Error] Unit1.cpp(15): E2451 Undefined symbol 'EditKeyPress'
[BCC32 Error] Unit1.cpp(16): E2451 Undefined symbol 'Edit3'
Я так понимаю ошибка в том что компилятор не может понять что это за функция EditKeyPress, она нигде не объявлена, но с другой стороны я копирую весь код один к одному что в книге на "форму" и выполняю все действия шаг за шагом. В чем может быть проблема, что я пропускаю? Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2010, 01:19
Ответы с готовыми решениями:

Общий обработчик событий для однотипных компонентов (например CheckBox)
Всем доброго времени суток. Прошу помощи в решении данного вопроса. Возникла маленькая проблемка. Есть массив из CheckBox'ов (40 штук...

Создать обработчик событий для группы однотипных объектов на форме Access
Здраствуйте, уважаемые знатоки) Пишу VBA код в Access2003. Ситуация следующая: на форме есть массив однотипных контролов; хочу настроить их...

Множество однотипных таблиц и одна форма
Спасибо за внимание. Имеется 20 таблиц с одинаковой структурой,одинаковыми полями и одна форма. Как сделать, чтобы в форму выводились...

7
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
17.11.2010, 09:05
какой именно пример?
1
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
17.11.2010, 09:36
Цитата Сообщение от y_katz Посмотреть сообщение
[BCC32 Error] Unit1.cpp(15): E2451 Undefined symbol 'EditKeyPress'
[BCC32 Error] Unit1.cpp(16): E2451 Undefined symbol 'Edit3'
У вас не объявлена функция EditKeyPress до места её использования (либо же нет прототипа).
То же самое с Edit3. Проверьте, присутствует ли объект на форме.
1
17.11.2010, 09:40

Не по теме:

Цитата Сообщение от MikeSoft Посмотреть сообщение
У вас не объявлена функция EditKeyPress до месте её использования (либо же нет прототипа).
То же самое с Edit3. Проверьте, присутствует ли объект на форме.
угу, оно то так, у Культина есть косячные примеры... даже на диске есть нерабочие... помню как бился с одним... но в конце концов понял, что у него руки кривые и его способом прога работать не будет =)..

1
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
17.11.2010, 16:55  [ТС]
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
какой именно пример?
Вот этот, я сделал скрин страницы
Миниатюры
Одна функция для обрабатывания разный однотипных событий  
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
17.11.2010, 17:22
вот блин... у меня другая книжка . хм.. в общем если в листинге заголовочного файла не объявлена функция EditKeyPress, то придется делать по своему, т.к. пример наверняка косячный.

Судя по всему, суть этой функции сводится к тому,чтобы в эдит, нельзя было вводить буквы (только числа и символ запятой)... это можно сделать следующим способом:
в эдит на событие KeyPress вбиваем код:
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
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key >= '0') && (Key <= '9')) {}
else if (Key==VK_BACK){}
else if ((Key == '.') || (Key == ','))
        {
        if (((TEdit*)Sender)->Text.Pos(DecimalSeparator)!=0)
                Key = 0;
        else
                Key = DecimalSeparator;
            }
else if (Key=='-')
{
if (Edit1->Text.SubString(0,1)=="-")
        {
        Key = 0;
        Edit1->Text=Edit1->Text.Delete(1,1);
        }
else
        {
        Key = 0;
        Edit1->Text=Edit1->Text.Insert("-",1);
        }
}
else Key = 0;
}

Не по теме:

з.ы.: рекомендую ознакомиться (как выложить картинку на форум) https://www.cyberforum.ru/abou... post594251

1
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
17.11.2010, 17:33  [ТС]
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
в общем если в листинге заголовочного файла не объявлена функция EditKeyPress, то придется делать по своему, т.к. пример наверняка косячный.
За код спасибо, буду разбирать.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
17.11.2010, 17:33
y_katz, cудя из названия темы, можно сделать вывод, что пример должен был научить пользоваться параметром Sender.
Обратите внимание на 8 строчку в коде, который написал для вас sh4d°_°ff (только эта строчка не привязана к конкретному компоненту).
В этой строке демонстрируется приведение класса TObject (прародителя VCL классов, см. Иерархию классов).
к нужному типу (в данном случае к классу TEdit).
Это даёт вам право назначить данный обработчик на объекты аналогичного класса.
Если вы не поняли сути - пишите, попробую объяснить немного по-другому.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2010, 17:33
Помогаю со студенческими работами здесь

Обработка событий группы однотипных элементов управления польз. формы
Имеется следующая проблема. На пользовательской форме есть несколько элементов ComboBox Для всех этих элементов обработка событий...

Как организовать еще одно место для обрабатывания процедур?
в mainActivity уж очень много обрабочиков событий. как проще обрести возможность писать обработчики в еще одном подобном месте, но чтобы не...

Одна модель, но разный набор данных
Никак не соображу, как правильно сделать, задача такая: есть модель ActiveRecord из таблицы &quot;pays&quot;. В главном меню есть две...

Doevents обратная функция: Прерывание стэка событий Windows пока не выполнится стэк событий application
Вот есть DoEvents он передает управление очередью винде, асуществует ли обратная функция, которая передавала бы управление приложению? :)

Одна функция для нескольких обработчиков
Видел как-то в нете инфу, что в одну функцию можно запихать несколько селекторов через запятую для обработки запросов с нескольких форм,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru