![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| matveev |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Помогите пожалуйста со следующей проблемой.
Есть класс:
Второй класс:
1. Создаю экземпляр класса TCodeButton. 2. В constructor'е класса TCodeButton создаю экземпляр класса TBar, FBar := TBar.Create(Self) Задача: Мне просто нужно (НЕОБХОДИМО!!!), чтобы при создании экземпляра класса TBar, свойство Caption получало значение равное AParent.Name!!! Делаю так: В констракторе класса TBar, в который я передаю родительский контрол, пытаюсь получить его имя: AParent.Name --- ??? А оно пустое... что делать??!?? Как решить проблему? |
||||
|
|||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
я что-то наверное не так понял...
Чем тебя не устраивает Owner? он передается в конструкторе... или можешь в конструктор добавить параметр с Parent-ом, что-то вроде:
а вообще Name у родителя есть? ты его точно задаешь? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
А разве у "Self" есть свойство Name?
Добавлено @ 10:58 ты передаешь в конструкторе TBar и принимаешь его за TCustomControl |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Rennigth
Self, который он передаёт в конструктор есть наследник от TPersistent! Добавлено @ 11:03 разве нет? |
|||
|
||||
| matveev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Да. Имя я задаю. Проблема видимо в том, что я пытаюсь получить имя когда оно еще не присвоено?!?! Смотрю сейчас на реализацию TControl (controls.pas), смутно понимаю, что на установку имени там весится какое - то событие посредством TControlActionLink. Никак не могу разобраться. КТо нибудь знает как это сделано у TControl? |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Yanis
а ну да... Я непонимаю в принципе в чем проблема у matveev. Родитель TCustonControl, нужно передать имя родителя в конструкторе для поля Caption... что не выходит? Добавлено @ 11:11 ну а ты и у TCodeButton сделай конструктор с передачей имени. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| matveev |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
constructor TCodeButton.Create(...) begin FBar := TBar.Create(Self); end; constructor TBar.Create(AParent: TControl) begin FParent := AParent; FCaption := FParent.Name; // ВОТ ТУТ В РЕЗУЛЬТАТЕ FCaption - ПУСТОЙ!!! // А В НЕМ ДОЛЖНО БЫТЬ AParent.Name // ПОЧЕМУ ТАК?? end;
Так я знаю, что так можно сделать, но к сожалению это не удовлетворяет условиям моей задачи. Нужно получать имя AParent.Name именно из TBar. Это сообщение отредактировал(а) matveev - 30.1.2006, 11:15 |
||||||
|
|||||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
а как ты можешь получить Name в конструкторе если ты его к этому времени еще не задал? ты можешь перегрузить каккой-нибудь SetName у TCodeButton и в нем присваивать Caption TBar-а. Добавлено @ 11:28
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| matveev |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Фишку с overrid'om SetName'а я тоже знаю, но она опять - же мне не подходит.
Так И я про то - же! Получить его можно, это реализовано в описании класса TControl (Control.pas), там как я понял вешается событие на изменение Name, затем оно ловится, с помощью TControlActionLink. Но примеров по TControlActionLink, я не могу найти, поэтому и разобраться никак не могу. Посмотрите ведь это - же как то там делается? |
||||
|
|||||
| Rennigth |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Посмотрел, помоему никак не делается... Constructor TControl:
Constructor TWINControl:
Constructor TCustomControl
ниодного упоминания об ActionLink. Добавлено @ 11:59 а чем тебе не подходит у TBar сделать GetCaption
-------------------- (* Honesta mors turpi vita potior *) |
||||||||
|
|||||||||
| matveev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Controls.pas
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
matveev
Это немного не то. IsCaptionStored вообще только для формы в Design-time. Лутше скажи зачем тебе это нужно? Извени, но помоему ты занимаешься извращениеим... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
![]()
|
| Правила форума "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. |