Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В каком классе появилось свойство caption 
V
    Опции темы
Akella
  Дата 1.2.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



В каком классе появилось свойство caption?

Я не могу ни в гугле найти, ни в справке по D2007.
Может в дельфи есть способ, как узнать, в каком классе объявлено то или иное свойство.

Мну нужно что-то вроде этого
Код
WriteString(Controls[i].Name,    'Caption',   TWinControl(Controls[i]).caption);

Но у TWinControl нет свойства caption

Цитата

[DCC Error] uSaveWinControlsToIni.pas(93): E2362 Cannot access protected symbol TControl.Caption

PM MAIL   Вверх
northener
Дата 1.2.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Akella @  1.2.2011,  12:39 Найти цитируемый пост)
В каком классе появилось свойство caption?

Кажись в TControl. И в нем оно protected.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 1.2.2011, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Как мне добраться до него программно?
TControl(Controls[i]).caption тоже не прокатывает
PM MAIL   Вверх
Frees
Дата 1.2.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



изврат но всеже

Код

 type TPeekAtControl = class(TControl) end;
...
TPeekAtControl(Controls[i]).Caption := '55';


Это сообщение отредактировал(а) Frees - 1.2.2011, 13:38


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akella
Дата 1.2.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



а восстанавливать из ini файла также?
PM MAIL   Вверх
Frees
Дата 1.2.2011, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(Akella @  1.2.2011,  16:44 Найти цитируемый пост)
а восстанавливать из ini файла также?

какого еще ini файла?

Возможно тебе стоит TJvFormStorage посмотреть? 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Snowy
Дата 1.2.2011, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код
function GetCaption(c: TControl): string;
begin
  SetLength(result, c.GetTextLen + 1);
  c.GetTextBuf(PChar(result), Length(result));
end;

PM MAIL   Вверх
Akella
Дата 1.2.2011, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Что нужно-то?
Есть некий редактор свойств компонентов. Пользователь может изменять свойства выбранного компонента.
Вот среди прочих свойств, есть свойство Caption.
Мне нужно сохранить и восстановить все свойства. В том числе и Caption. 
На форме самые разные компоненты: эдиты, чекбоксы, таблицы, метки, выпадающие списки и т.д.
PM MAIL   Вверх
Poseidon
Дата 1.2.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Akella @  1.2.2011,  12:39 Найти цитируемый пост)
Но у TWinControl нет свойства caption
И нету. Полазь по VCL, у всех контролов, что используют caption, оно обьявлено отдельно для каждого в published. Т.е. не от родителя наследуется, а объявлено отдельно для каждого контрола.
Тебе нужно что-то вроди такого:
Код

if (Controls[i] is TLabel) then (Controls[i] as TLabel).Caption:= 'тест';

и так перебрать все возможные типы,
либо 
Код

TLabel(Controls[i]).caption:= 'тест';

если точно известен тип.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 1.2.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Poseidon @  1.2.2011,  13:55 Найти цитируемый пост)
if (Controls[i] is TLabel) then 


Цитата(Akella @  1.2.2011,  13:54 Найти цитируемый пост)
На форме самые разные компоненты: эдиты, чекбоксы, таблицы, метки, выпадающие списки и т.д. 

 :(

Добавлено через 29 секунд
Цитата(Snowy @ 1.2.2011,  13:53)
Код
function GetCaption(c: TControl): string;
begin
  SetLength(result, c.GetTextLen + 1);
  c.GetTextBuf(PChar(result), Length(result));
end;

Не совсем понял, этот код... а как будет выглядеть код для SetCaption?

Добавлено через 3 минуты и 11 секунд
Правильно?

Код

function TSaveWinControlsToIni.SetCaption(s: string): TControl;
begin
  SetLength(s, result.GetTextLen + 1);
  result.GetTextBuf(PChar(s), Length(s));
end;

PM MAIL   Вверх
Frees
Дата 1.2.2011, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



если не обязательно ini то можно посмотреть Сириализацию
http://www.rsdn.ru/article/delphi/serialization.xml

Это сообщение отредактировал(а) Frees - 1.2.2011, 14:10


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Poseidon
Дата 1.2.2011, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Akella @  1.2.2011,  13:54 Найти цитируемый пост)
На форме самые разные компоненты: эдиты, чекбоксы, таблицы, метки, выпадающие списки и т.д
Ну начнем с того, что у эдитов точно, скорее всего у таблиц, точно у выпадающих списков нету свойства caption. Если лучше присмотреться, то может оказаться что там всего-навсего 3-5 типов компонент.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 1.2.2011, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Frees @  1.2.2011,  14:09 Найти цитируемый пост)
если не обязательно ini то можно посмотреть Сириализацию

Читал smile, для мну слишком наворочено

Добавлено через 2 минуты и 15 секунд
Цитата(Poseidon @  1.2.2011,  14:14 Найти цитируемый пост)
Ну начнем с того, что у эдитов точно, скорее всего у таблиц, точно у выпадающих списков нету свойства caption. Если лучше присмотреться, то может оказаться что там всего-навсего 3-5 типов компонент.

Да, ты прав. Может так и переделаю smile
PM MAIL   Вверх
northener
Дата 1.2.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Poseidon @  1.2.2011,  13:55 Найти цитируемый пост)
Цитата(Akella @  1.2.2011,  12:39 Найти цитируемый пост)
Но у TWinControl нет свойства caption
И нету.

Есть у TWinControl это свойство. Как у любого наследника TControl. А доступ к нему показан в первом ответе Frees. Только это не изврат, а нормальный способ. 
Непонятно правда для чего сохранять в настройках Caption компонента, если в данном компоненте это свойство не опубликовано?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 1.2.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Мне не у всех компонентов надо, а только у тех, которые имеют это свойство. Мне Poseidon дал правильный намёк. И скорее всего я так и сделаю. Да, придётся выполнять много проверок, но что поделаешь :(
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.