![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
Вопрос поставил меня в тупик. Создаю компонент, наследник от TComponent, и один из его методов создаёт никак не связанную с ним форму. При клике на этой форме должно вызываться событие OnSampFormClick моего компонента. Вопрос заключается в следующем - как это реализовать, как дать понять форме, что её "родил" именно мой компонент? Единственный выход, который я вижу - создавать в форме public FPrent:pointer, присвоив ему при создании формы указатель на компонент и в перекрытом методе click формы вызыать TMyCP(fprent^).onsampformclick. собственно, так не получается: если присвоить в tmycp tempfrm.fprent:=@self, то при клике на форму получится acess violaton, а до других способов пока не додумался. Подскажите, пожалуйста.
|
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Купить/скачать какую нибудь книжку/учебник по Дельфи, а не по паскалю. P.S. "Шляпки" в коде Дельфи - есть признак либо незнания, либо "копипаста". Это сообщение отредактировал(а) northener - 25.9.2011, 23:57 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
раз вы умный, то подскажите - лучше всего запоминается на примерах. и почему шляпки - глупость? это ж разыменование указателя.
по этому вопросу я по сети ничего не нашёл - иначе бы не пришёл сюда. Это сообщение отредактировал(а) Proxin - 26.9.2011, 00:01 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Это действительно "разыменование указателя". Но эта шляпка нам досталась от Турбо Паскаля. В Дельфи эта "шляпка" не нужна! Если нужен реальный совет/ответ, приведите реальный пример кода. P.S."Раз вы Умный" На первый раз прощаю. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
Это сообщение отредактировал(а) Proxin - 26.9.2011, 01:22 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Бред. Что по-вашему означает fpar^? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
1. Вместо публичного поля лучше приватное, а устанавливать его, добавив форме конструктор с соответствующим параметром. 2. Все переменные классовых типов и так физически являются указателями (но не нуждаются в явном разыменовании). Поэтому поле объявлять нужно не Pointer а сразу tmycomp. Ну или если циклические ссылки юнитов не позволяют, то просто TComponent 3. Вместо создания собственного поля можно использовать свойство Owner формы (если я правильно понял что форма не должна жить дольше чем создавший её компонент)
Явное разыменование (^) можешь использовать (для классических указателей а не классовых ссылок ессно), тем более что со времен турбопаскаля всё еще остались места где без него не обойтись Это сообщение отредактировал(а) bems - 26.9.2011, 04:18 -------------------- Обижено школьников: 8 |
||||
|
|||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
благодарю. всё заработало.
Это сообщение отредактировал(а) Proxin - 26.9.2011, 14:43 |
|||
|
||||
![]()
|
| Правила форума "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. |