Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798

Куда делся обработчик после "удочерения" кнопки?

21.10.2013, 14:11. Показов 1472. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
.. И снова у меня тормоза в теории!... . Неожиданно оказалось, что:
если поместить кнопки на форме, написать на нажатие обработчик, а потом по событию FormShow() назначить кнопкам нового родителя (StringGrid), то внешне всё окей, никаких замечаний, и после компиляции кнопки там, где я им назначил, и очень мило нажимаются, но... никаких действий не производят. Что это за беда, и откуда у нее растут ноги?

Добавлено через 2 минуты
Вот с таким кодом это все (для конкретики):
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormShow(TObject *Sender)
{
   sgg1->Rows[0]->CommaText = "Òåìà1 Òåìà2 Òåìà3 Òåìà4 Òåìà5";
 
   Button2->Parent=sgg1;
   Button3->Parent=sgg1;
   Button4->Parent=sgg1;
   Button2->BoundsRect = sgg1->CellRect(0,0);
   Button3->BoundsRect = sgg1->CellRect(1,0);
   Button4->BoundsRect = sgg1->CellRect(2,0);
}
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    AnsiString Str1 = Memo1->Text;
    for (int p=0,i=Str1.Length()-2;i>0;i--)
      if (Memo1->Text[i]=='\r' && Memo1->Text[i+1]=='\n')
        if (++p % 2 == 1) Str1.Delete(i,2);
    Memo1->Text = Str1;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2013, 14:11
Ответы с готовыми решениями:

куда делся Qt
хотел скачать Qt с этого сайта http://www.qt-project.org можно было раньше скачать готовй экзешник? что делать теперь? где скачать или...

Куда делся фаил?!
Лежал у меня текстовый документ на телефоне?созданный там в Quickoffice.Чтобы распечатать хотел скинуть его на комп,что бы не рыскать по...

Куда делся screen?
Привет, форумчане! Запускаю приложение в screen, функцией System. Приложение запускается, screen есть, но я его не вижу, screen -r его тоже...

8
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.10.2013, 15:35
nick42, Сигнал от кнопки (если в самом классе кнопки нет обработчика) передается родителю. И если ваш sgg1 не является наследником TForm1, то пропадает втуне. А кто такой sgg1? Экземпляр какого-то другого класса? Или компонент Form1? В последнем случае все по идее должно быть в порядке, те. сигнал должен достигать TForm1::Button3Click. А если другого класса, то вам следует в этом классе написать обработчик (лучше - руками).
Можно еще попробовать при смене родителя прописать
C++
1
Button3->OnClick = TForm1->Button3Click;
, но уверенности нет.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.10.2013, 15:50  [ТС]
Да нет, никакой экзотики (я вообще редко пишу "руками"; набросаю на форму компонентов, расставлю по местам, а потом решаю, что с ними делать...). sgg1 - это обычный StringGrid, стандартно созданный, на 5 колонок. Кнопки опробованы и работают (без удочерения). Я даже назначил им горячие клавиши, - так те работают как надо и после удочерения. Переназначать пробовал обработчик, явно указывая родителя... . Пробовал этот проект и в студии ХЕ2 (на всякий случай). Просто не знаю, куда двинуть фантазию... .
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.10.2013, 15:58
Цитата Сообщение от nick42 Посмотреть сообщение
sgg1 - это обычный StringGrid
Он является компонентом Form1 ? Если да, то это странно. Те я хочу сказать, что тогда я тоже плохо понимаю механизм.
Наверное, после переноса клик на кнопке воспринимается как событие Грида...

Добавлено через 1 минуту
А если обойтись без смены родителя? Изменили координаты (посадили в ячейки) и выдвинули на передний план...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,863
Записей в блоге: 12
21.10.2013, 16:52
Лучший ответ Сообщение было отмечено nick42 как решение

Решение

Цитата Сообщение от nick42 Посмотреть сообщение
Просто не знаю, куда двинуть фантазию... .
В сторону того, что TStringGrid не пересылает детям сообщения WM_COMMAND (единственное исключение - inplace editor). Соответственно, кнопка его просто не получает...
2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.10.2013, 16:55  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
В сторону того, что TStringGrid не пересылает детям сообщения WM_COMMAND (единственное исключение - inplace editor). Соответственно, кнопка его просто не получает...
Спасибо. Это только у таблицы такая фантазия, или целая группа компонентов, имеющих родительские права, этим страдает?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,863
Записей в блоге: 12
21.10.2013, 16:57
Насколько мне известно - только гриды так выделываются.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.04.2018, 10:28  [ТС]
Вот вдруг вернулся к старой теме и появился такой вопрос...
Прцедуру нажатия на кнопки "в таблице" я реализовал через ButtonMouseDown, - это сообщение кнопка всё же получает.
Теперь для индикации признака сортировки (и направления сортировки) хочу поиграться с "удочерением" соответствующей картинки уже кнопкой. (Пока вместо картинки просто Shape).
C++
1
2
   if(Shift.Contains(ssLeft)) ((TButton*)Sender)->Click();
   Shape1->Parent = ((TButton*)Sender);
Но к сожалению в состоянии ButtonSelected картинка не видна (видно, не та шкурка на виду). Когда фокус на другом сомпоненте - всё нормально.

Как добиться, чтобы и при выборе кнопки мой Shape был виден?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.04.2018, 11:03  [ТС]

Не пойму, чего меня переклинило на этом TButton! Со SpeedButton всё великолепно получается; и buttonclick он подхватывает, и глиф у него есть - в любом месте, причём.
В общем, - зря себе и людям голову морочил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2018, 11:03
Помогаю со студенческими работами здесь

Куда делся bandwidth?
когда то раньше была нужда ограничивать скорость порта микротика, и просто в свойствах порта /interface ethernet выбирал в интерфейсе в...

Куда делся винт?
Здраствуйте. Обращаюсь к вам, так как впервые сталкиваюсь с подобной проблемой. комп при запуске входит в BIOS. с флешки грузится, а с...

Куда делся метод?
Быть добру! Создал экземпляр SimpleArrayMap<String, Byte>. Куда бы порыть, чтобы он-таки увидел свой документированный метод...

Куда делся my.ini?
Здравствуйте! Есть такая проблема. Установил XAMPP. В качестве СУБД в сборку входит 10.1.22-MariaDB. Хочу изменить настройки в...

Куда делся ManagementObjectSearcher?
Привет всем. Ребят, что-то не пойму, а куда делось то? ManagementObjectSearcher В 6.0 понятно, но в 4.8 всегда было. Где? )) Или я...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru