92 / 92 / 99
Регистрация: 25.01.2013
Сообщений: 326

Как вызвать событие объекта в процедуре?

12.09.2014, 19:44. Показов 7406. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня программа большая, всё не буду описывать, но смысл такой: у меня есть две кнопки Button1, Button2. В методе OnClick второй кнопки написана строчка Form1->Color=clRed; Мне нужно, нажимая на кнопку Button1 вызвать метод OnClick у Button2. Я написал в процедуре OnClick первого баттона Button2->OnClick; но так не работает.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2014, 19:44
Ответы с готовыми решениями:

Как вызвать событие объекта TListBox, когда его экземпляр является членом моего класса
Всем привет! Есть мной писанный класс, который ведет лог. Класс примерно такого вида: class nLog { private: AnsiString...

Как правильно вызвать событие ?
Добрый день. Использую контрол типа TCSpinEdit в связке с кнопкой TButton. После ввода или изменения числа в SpinEdit, по нажатию...

Как в С++ builder сделать чтобы Событие срабатывало в фокусе любого объекта на форме?
Добрый день, у меня есть событие на Нажатие клавиши ESC. Использую Rad Studio 2010 Навешал событие на форму "MainForm"...

8
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
12.09.2014, 20:26
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    Label1->Caption  = "a";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
    Button1->Click();
}
Добавлено через 54 секунды
Ну либо так

C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    Label1->Caption  = "a";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
    Button1->OnClick(Button1);
}
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33194 / 21480 / 8231
Регистрация: 22.10.2011
Сообщений: 36,848
Записей в блоге: 11
12.09.2014, 20:43
Цитата Сообщение от DeadHipo Посмотреть сообщение
Ну либо так
Не надо делать этого, если только ты не хочешь подменить Sender (то есть, без назначения компоненту обработчика OnClick вызвать его через OnClick другого экземпляра этого же типа). Click() - гораздо более правильный способ...
2
92 / 92 / 99
Регистрация: 25.01.2013
Сообщений: 326
20.09.2014, 12:47  [ТС]
А если мне нужно вызвать событие OnClick у TImage? Для кнопки работает ->Click(), а для картинки ошибку показывает...
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
20.09.2014, 12:57
Дикутенз, вызывай через событие, как во втором варианте, только не подменяй ему Sender, как сказал UI . Делай по аналогу
0
6 / 6 / 3
Регистрация: 22.04.2012
Сообщений: 67
20.09.2014, 13:06
Если они выполняют одну и тоже тогда сделай одну функцию для всех и все.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33194 / 21480 / 8231
Регистрация: 22.10.2011
Сообщений: 36,848
Записей в блоге: 11
20.09.2014, 13:19
Если они все выполняют одно и то же, тогда просто переопределяется метод Click() для TImage, и на этом разговор заканчивается. Даже обработчиков никаких писать не надо. Только кому нужны разные изображения, при клике на которые происходит одно и то же?
0
92 / 92 / 99
Регистрация: 25.01.2013
Сообщений: 326
20.09.2014, 13:30  [ТС]
Они выполняют не одно и то же. У меня 10 TImage с именами Image1,...,Image10. При нажатии на кнопку, рандомным образом выбирается число от 1 до 10, и затем нахожу(с помощью FindComponent) нужную Image и вызываю у нее процедуру OnClick. (В самом первом сообщении я хотел узнать, как из одной процедуры вызвать событие какого-то объекта)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33194 / 21480 / 8231
Регистрация: 22.10.2011
Сообщений: 36,848
Записей в блоге: 11
20.09.2014, 14:05
Дикутенз, смотри:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Где-то в тексте программы, до реализации Button1Click
class TClickImage : public TImage
{
public:
    __fastcall virtual TClickImage(Classes::TComponent* AOwner) : TImage(AOwner)
    {
    }
    DYNAMIC void __fastcall Click(void) // Гарантируем доступ к защищенному методу
    {
        TImage::Click();
    }
};
 
// Это твоя кнопка
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int num = Random(3) + 1;
    TClickImage *img = reinterpret_cast<TClickImage*>(FindComponent("Image" + IntToStr(num)));
 
    // Тут будет вызван OnClick для того Image, индекс которого сгенерировался в num
    if(img) img->Click(); 
}
Цитата Сообщение от Дикутенз Посмотреть сообщение
как из одной процедуры вызвать событие какого-то объект
И еще раз повторяю: не надо вызывать событие. Событие происходит, вызывается метод...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2014, 14:05
Помогаю со студенческими работами здесь

Имя объекта вызывающего событие
Как вернуть имя объекта который вызывает событие(Вернуть из события); Ну например: void TForm4::ImgGen(UnicodeString Path, int i,...

Вызвать событие queryAfterScroll
Добрый день! Подскажите как программно вызвать событие: void __fastcall TDMAdo::queryAfterScroll(TDataSet *DataSet) {} Пробовал...

Как создать событие или вызвать метод при нажатии на экземпляр объекта (Button)?
List&lt;Button&gt; but = new List&lt;Button&gt;(); private void button1_Click(object sender, EventArgs e) { Button p...

Класс: Как обработать событие последнего объекта в форме, не создавая в классе объекта промежуточное событие?
Итак! Проблема состоит в следующем! Имеется класс в который входит объект второго класса. В последнем классе имеется событие. Как правильно...

Как вызвать процедуру в процедуре
Ребят, помогите пожалуйста! Я хочу эту процедуру: procedure TForm23.Edit2KeyPress(Sender: TObject; var Key: Char); begin case key of ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru