![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
В каком классе появилось свойство caption?
Я не могу ни в гугле найти, ни в справке по D2007. Может в дельфи есть способ, как узнать, в каком классе объявлено то или иное свойство. Мну нужно что-то вроде этого
Но у TWinControl нет свойства caption
|
||||
|
|||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Кажись в TControl. И в нем оно protected. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Как мне добраться до него программно?
TControl(Controls[i]).caption тоже не прокатывает |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
изврат но всеже
Это сообщение отредактировал(а) Frees - 1.2.2011, 13:38 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
а восстанавливать из ini файла также?
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
какого еще ini файла? Возможно тебе стоит TJvFormStorage посмотреть? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Что нужно-то?
Есть некий редактор свойств компонентов. Пользователь может изменять свойства выбранного компонента. Вот среди прочих свойств, есть свойство Caption. Мне нужно сохранить и восстановить все свойства. В том числе и Caption. На форме самые разные компоненты: эдиты, чекбоксы, таблицы, метки, выпадающие списки и т.д. |
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
И нету. Полазь по VCL, у всех контролов, что используют caption, оно обьявлено отдельно для каждого в published. Т.е. не от родителя наследуется, а объявлено отдельно для каждого контрола.
Тебе нужно что-то вроди такого:
и так перебрать все возможные типы, либо
если точно известен тип. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| Akella |
|
||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
:( Добавлено через 29 секунд
Не совсем понял, этот код... а как будет выглядеть код для SetCaption? Добавлено через 3 минуты и 11 секунд Правильно?
|
||||||||
|
|||||||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
если не обязательно ini то можно посмотреть Сириализацию
http://www.rsdn.ru/article/delphi/serialization.xml Это сообщение отредактировал(а) Frees - 1.2.2011, 14:10 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Читал Добавлено через 2 минуты и 15 секунд Да, ты прав. Может так и переделаю |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Есть у TWinControl это свойство. Как у любого наследника TControl. А доступ к нему показан в первом ответе Frees. Только это не изврат, а нормальный способ. Непонятно правда для чего сохранять в настройках Caption компонента, если в данном компоненте это свойство не опубликовано? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Мне не у всех компонентов надо, а только у тех, которые имеют это свойство. Мне Poseidon дал правильный намёк. И скорее всего я так и сделаю. Да, придётся выполнять много проверок, но что поделаешь :(
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Если нет Caption, то, как правило, есть Text.
GetText вернёт или то, или то. Хотя по сути это одно и то же. |
|||
|
||||
| MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
можно и мне намек дать?
любое published св-во устанавливается с пол-пинка:
Это сообщение отредактировал(а) MetalFan - 1.2.2011, 18:45 -------------------- There are always someone smarter than you... |
||||
|
|||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
В 2007 через RTTI нельзя проверить есть Caption или нет?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Keeper89, почему нельзя? GetPropInfo - не?
-------------------- There are always someone smarter than you... |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
В сторону TJvFormStorage совершенно правильно ткнули. А работает это через RTTI. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Да ну. Где?
unit Controls;
или я не там смотрю? Добавлено через 1 минуту и 59 секунд Ну так Caption и Text - это как бы разные вещи. Caption редактировать нельзя, а Text зачастую можно. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А по сути это одно и то же. Если ты попробуешь получить Caption у TEdit, то получишь Text. Если попробуешьполучить Text у TLabel - получишь Caption. Их разделение чисто логическое. А по сути - это текст контрола. Если брать WinAPI - там они не различаются. |
|||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
На мой взгляд, этот вариант оправдан лишь в одном случае: если нет возможности создать потомка, но при этом необходимо добраться к свойству. Во всех остальных это есть ИЗВРАТ. При чём гарантий, что такой код будет "глотаться" новыми версиями компилятора, нам никто не даёт! 2 AkellaКак раз для твоей задачи, идеально подходит модуль TypInfo, в котором реализованна возможность работы с RTTI(Интроспекция).Ты можешь с его помощью проверять, есть ли у объекта определённое сойство, и если такое есть, то получать/инициализировать значение эт. свойства. Соответственно, модуль работает только с published свойствами. |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Пустая строка в Text для Edit - нормальное явление. Ждем от пользователя ввода данных. Пустая строка в Caption для Label - а нафига тогда вообще этот Label? Так что это совсем не одно и то же.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Да, как проверить наличе свойства не проблема. Проблема в том, что вместо простого доступа к свойству Caption, как например к Visible TWinControl(Controls[i]).visible придётся городить огород с проверкой на тип конкретного компонента if ... is TcxCheckBox then if ... is TLabel then if ... is TещёКакойТоТамКомпонент then Добавлено через 4 минуты и 3 секунды Легко Добавлено через 4 минуты и 35 секунд Я не хочу использовать джедаев Добавлено через 7 минут и 3 секунды
Та это понятно, а не понятно как это реализовать 1-3 строками кода. Чтобы можно было сохранить значение Caption, а потом восстановить. В цикле. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Т.е. ты полагаешь, что реализованы они божьим духом и в твоём коде невоспроизводимы в принципе? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Да мне всё равно, кем они реализованы. Я просто не хочу использовать эту библиотеку и всё. Я наоборот стараюсь удалить из всех проектов использование этой библиотеки.
|
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Давно говорил и говорю. Библиотека RxLib нужна не столько для того чтобы ее явно использовать, сколько для того чтобы в ее исходниках смотреть как умные люди сделали что-то. То же касается и ее потомка JEDI. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А почему просто не сделать SaveComponent и LoadComponent?
А в код джедаев за этим лазить безполезно, ибо там корябают все кому не лень. И многие из них далеко не умные... |
|||
|
||||
| CodeMonkey |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Особенно GetMem.inc образец кода, ага. Или DBXJSON.pas
Надо полагать, это писали "далеко умные" люди. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Непонятно, почему автор игнорит мое предложение читать/писать св-ва (Caption и по.) через TypInfo...
Ну да ладно. -------------------- There are always someone smarter than you... |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
MetalFan, ну вот так нас игнорят =)
Вот вариант с API:
|
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
1. Ну вообще-то я в основном говорил о RXLib. А в её код смотрят даже разработчики Дельфи. О чем свидетельствуют появившиеся не так давно в Дельфи новые модули с функциональностью ряда модулей RxLib и даже с теми же именами. 2. Что же касается именно JEDI, то тут конечно имеются оговорки. И в JEDI может появиться бредовый код. Но нельзя не отметить, что в JEDI есть много ценного, чего в Дельфи пока нет. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Как непонятно? Ведь это использует JEDI, а автора от них тошнит! -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Ты не прав. Я читал его. И ответил на него: http://forum.vingrad.ru/index.php?showtopi...t&p=2292644 Может я не понял, что ты хотел сказать мне? Добавлено через 2 минуты и 58 секунд
if GetPropInfo(Components[i], 'Caption') <> nil then SetStrProp(Components[i], 'Caption', SomeNewCaption); Добавлено через 3 минуты и 6 секунд Надо попробовать |
||||
|
|||||
| CROTishka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
Ну, можно и не как Посейдон предложил, а через RTTI читать свойство c именем Caption. Работать будет для всех компонент, а не только предопределенных.
Добавлено через 1 минуту и 36 секунд
а, ну я вижу вы сами разобрались. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
да уж, спехом читал всё по диагонали
|
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
MetalFan, супер. Спасибо. Вопрос решён.
Вот так сохраняем:
Вот так восстанавливаем:
|
||||
|
|||||
![]()
|
| Правила форума "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. |