![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Требуется помощь по свойствам обьектов [D6]
SashaS © (2002-12-19 12:44:00)Приветствую Всех знатоков Делфи !
Натолкнулся на проблему - нужно вмешательство "хирургов".
Как достучаться в RunTime к PUBLIC свойству(свойствам) обьекта,
имея строку с именем свойства ???
Буду признателен Всем, но особенно тем кто поможем выйти из тупиковой ситуации.
Digitman (2002-12-20 08:43:00) [1]Что есть "нужная форма" ? Адрес целевого объекта-формы в памяти ? Откуда он тебе известен на момент назначения св-ва Parent ? Ведь св-во TButton.Parent при установке требует адрес экз-ра класса, унасл. от TWinControl !
Как ты собираешься искать адрес parent-объекта ? по каким критериям ?
SashaS (2002-12-19 18:08:00) [2]Может быть Ты и прав.
Но хотелось бы сделать, по возможности, гибкую систему.
>>Ну а почему обязательно требуется доступ к этому св-ву как к >>published ? Что, ты до него не в состоянии добраться обычным >>образом ?
В состоянии но....
Предположим
Создаю динамически 2 формы; -|______ что создавать - в
Создаю динамически TButton -| настройках (в таблицах)
нужно TButton.Parent := нужная форма
string "Parent" и строку "нужная форма" - Тоже хочу хранить в таблице
Published - достаю
а вот Public - .............. :(
Digitman (2002-12-19 16:40:00) [3]По-моему, ты себе сам проблему ищешь)
Digitman (2002-12-19 16:30:00) [4]Ааа ! Вот ты куда клонишь !
Имеется ввиду - TControl.Parent ? И в результате менять родительский TWinControl ?
Ну а почему обязательно требуется доступ к этому св-ву как к published ? Что, ты до него не в состоянии добраться обычным образом ?
NailS (2002-12-19 16:17:00) [5]
> SashaS
Может расскажешь в чем задача?
Наверное, все гораздо проще?
SashaS (2002-12-19 15:49:00) [6]Свойство Parent переопределить сотне компонентам
и таким образом написать следующюю версию Делфи?
Digitman (2002-12-19 15:28:00) [7]извиняюсь
"..идент-ры которой НА ЭТАПЕ КОМПИЛЯЦИИ будут фигурировать в RTTI.."
следует читать как
"..идент-ры которой, будучи обработанные НА ЭТАПЕ КОМПИЛЯЦИИ, будут в последствии (в run-time) фигурировать и в RTTI (имена, типы, значения).. "
Digitman (2002-12-19 15:24:00) [8]Ничего не понял. Нужно новое Public - добавляй в public, нужно Published - соотв-но в published. Сомневаешься ? Сразу (однократно) перенеси все public-идент-ры в published-секцию и переcобери EXE. Впоследствии будешь иметь к ним доступ через RTTI, если вдруг понадобится в какой-то момент. Какие проблемы ?
Единственная секция класса, идент-ры которой НА ЭТАПЕ КОМПИЛЯЦИИ будут фигурировать в RTTI - это секция published. Все остальные секции (private, protected, public) образуют различные области видимости ТОЛЬКО на этапе компиляции, в run-time инф-ция об идент-рах этих секций недоступна (попросту выброшена компилятором за ненадобностью - смещения он уже посчитал)
SashaS (2002-12-19 15:03:00) [9]Когда понадобится новое PUBLIC свойство (при настройке системы у клиента) - ннеобходимо перенести нужные идентификаторы
в published и пересобрать ЕХЕ-шник.
А это немного неудобно :(
Digitman (2002-12-19 14:19:00) [10]
> Это грусно в любом случае :(
Почему ? Поясни. Что мешает тебе перенести нужные идентификаторы в published ?
SashaS (2002-12-19 13:43:00) [11]Это мне нодо ТОЧНО.
F1 (2002-12-19 13:27:00) [12]А это тебе точно надо???
Может быть проблема не стоит решения???
SashaS (2002-12-19 13:20:00) [13]Это грусно в любом случае :(
И это эдинственные решения маей проблемы ?
F1 (2002-12-19 13:08:00) [14]Ну сделай ты все нужное Published...
Published ведь для того и предназначены, чтобы их можно было вытащить...
Или делай бо-ольшой case, где по строке все определяешь :)))
Но енто гемор еще тот...
SashaS (2002-12-19 12:59:00) [15]Именно таким образом я и достаю Published свойства,
а вот с PUBLIC - у меня ничего не выходит.... :(
Наверное я чего-то не знаю :(
F1 (2002-12-19 12:51:00) [16]TypInfo.pas копай...
Но там только Published можно вытащить.
Но с другой стороны, никто не мешает сделать все что надо Published...