|
|
|
TObject->MethodAddress
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пишу на C++Builder. Проблема такая: У меня есть TPageControl на главной форме. Есть несколько классов, производных от TFrame. При определеных действиях я создаю новую TTabbSheet в PageControl, создаю TMyFrame1(или TMyFrame2, или TMyFrame3, ...) присавиваю этот класс указателю на TFrame и помещаю этот объект на вновь созданную закладку. Т.е. на закладке у меня хранится указатель, типа TFrame, на мой какой-то фрейм. Точной тип неизвестен. Далее, мне надо вызывать методы именно моего фрейма используя указатель на TFrame, который есть на закладке. Я пытался сделать вставить свой чисто (без реализации методов) абстрактный класс между TFrame и TMyFrame1 (TMyFrame2, ...), соответственно в TTabSheet сохраняя указатель на тип абстрактного класса, делал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. самим Builder. Он начал записывать в .dfm файл (файл настроек фрема), свойства, которые совершенно не относились к классу TFrame. Например свойство OldCreateOrder, которое было обнаружено в классе TCustomForm (даже не в TCustomFrame!!!).. Так и не поняв причину такого поведения, стал искать другой подход к решению данной задачи. Вспомнив механизм отражения Java, который отлично работает, решил использовать его и в Builder - т.е. воспользоваться методом MethodAddress класса TObject, благо он является предком для всех фреймов. Объявил в своих фреймах нужнуб мне функцию с ключевым словом __published: Естественно получил адреса этих методов и смог даже вызвать их!! Но появилась другая проблема. Когда функция была пустая (содержала только к примеру ShowMessage("Функция f1() работает")), она прекрасно отрабатывалась, как только я поместил туда код с оператором new сразу стало возникать непонятное исключение о записи по какому-то там адресу. Тоже не совсем понятно почему. Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Если кто-нибудь знает в чем ошибки обоих методов, подскажите, пожалуйста. С уважением Vector. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 11:15 |
|
||
|
TObject->MethodAddress
|
|||
|---|---|---|---|
|
#18+
а че кросспостишь-то ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 11:59 |
|
||
|
TObject->MethodAddress
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/forum/actualthread.aspx?tid=263550 ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 13:20 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=371&tid=2031921]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 362ms |

| 0 / 0 |
