![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
Надо сделать сабж.
Обрабатываю выбор в меню. Пишу:
Перерисовывается ВСЁ, Помогите Заранее благодарен (как и за все предыдущие подсказки) |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
При изменении FormStyle происходит полное пересоздание окна.
Окно создается заново, получает новый хэндл и т.п. Естественно оно перерисовывается. |
|||
|
||||
| Zero |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Это делается с помощью API: поверх всех:
|
||||||
|
|||||||
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
Объяснение понятно. НО! как этого избежать? А то у меня в начале запускается Заставка, форма ввода...
Опоздал... Попробую API... Это сообщение отредактировал(а) Maykl - 16.3.2005, 12:02 |
|||
|
||||
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
О-па! а вот и глюк!
Из меню - всё работает. При нажатии кнопки (связанной с меню) в тулбаре выскакивает сообщение: Проект XXX.exe вызвал исключение класса EInvalidCast с сообщениес 'Invalid class typecast'. Процес остановлен. используйте Шаг или Запуск для продолжения. тишина. ПО-МО-ГИ-ТЕЕЕЕЕЕЕЕЕЕЕЕ!!!!!!!!!!!! Это сообщение отредактировал(а) Maykl - 22.3.2005, 15:00 |
|||
|
||||
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
тишина. ПО-МО-ГИ-ТЕЕЕЕЕЕЕЕЕЕЕЕ!!!!!!!!!!!!
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Maykl Ну дак ты сам же в своем коде приводишь указатель на экземпляр класса к TMenuItem, а кнопка не является таковой(но при этом связана с этим кодом и в Sender лежит указатель на экземплял кнопки), т.е. она TButton (Или какая то другая вариация, но суть в том что данное приведение типов не возможно)
Варианты решения проблемы: 1) Явно указывать экземпляр TMenuItem 2) Проверять принадлежность экземпляра класса(Sender) к TMenuItem или TButton RTTI операцией is. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
ты код покажи ( на котором облом идет )
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
При чём тут TMenuItem ?
Я же код взял тот, что Zero подсказал. в API. (писал ЗАРАБОТАЛО!!!) Это код для меню. А у кнопки событие OnClick стоит в Nmenu2_1Click
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
есть подозрение что Sender -- это меню а не его итем.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Maykl А при том что код обработки клика на TMenuItem или на TButton передает в событие указатель на себя - это есть Sender. При клике на меню все будет так как и должно быть!!! А при клике на кнопке передастся указатель на TButton, а он ни как не может быть приведен к TMenuItem откуда и получаем Invalid Type Cast
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Maykl |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 1.3.2005 Где: г.Белгород Репутация: нет Всего: нет |
Понял. Короче, надо аналогичный код написать для кнопки!
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
не обязательно. как тебе уже выше писалиЖ проверяй какого типа Sender и если он TMenuItem -- чекай его, если кнопка -- ничего не делай...
+ совет по организации кода: если одни и те же действия выполняются в разных местах программы -- вынеси эти действия в отдельную функцию -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |