Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Как поменять значение property в уже созданных компонентах?   Найти похожие ветки 

 
IDenS   (2006-11-24 16:18) [0]

Привет всем!
У меня такая проблема. Был создан компонент с property=False. После чего он был активно использован во многих формах. Возникла необходимость сделать property default True. Можно ли как-то автоматом поменять во всех уже созданных компонентах значение property с False на True?


 
StriderMan ©   (2006-11-24 16:46) [1]

написать программулину которая перелопатит все DFM. Или найти готовую


 
DimaBr   (2006-11-24 16:56) [2]

default  указавает что не следует сохранять ли свойство в ресурс, если значение свойства равно указанному.
Следовательно все компоненты, у которых это свойство было установленно в true - записали это в ресурс, а которые False нет.

Теперь, вы меняете наоборот.

Что же получается. Компоненты, у которых свойство записано (true пишется)прочитаются нормально, у которых нет (false не пишется) получат значение по умолчанию то-есть TRUE.
Ужас !!!

Ответ на вопрос. Можно ли как-то автоматом поменять во всех уже созданных компонентах значение property с False на True ?
1. Устанавливаем свойство NoDefault или Stored True, (перекомпияем компонент)  переоткрываем все формы в корорых встречается этот компонент и сдвинув немного форму нажимаем кнопочку сохранить.
Потом компилим компонент с новым значением поумолчанию.

2. Пишем програмульку, которая отркывает формы (DFM) поочереди, ищет в них компонент и дописывает нужное значение.
Удачи...


 
Наиль ©   (2006-11-24 18:00) [3]

Я бы сделал так.
1. В компоненте сделал бы дополнительное свойство, пусть PropChanged:boolean stored true.
Оно должно быть самым первым из свойств. В конструкторе задать FPropChanged:=false;
2. Пусть MyProp свойство, которое мы хотим изменить (обозначить stored true). Тогда в методе SetMyProp записал бы
if not PropChanged then FMyProp:=not Value else FMyProp:=Value;
FPropChanged:=true;
3. метод SetPropChanged оставл бы пустым т.е.
begin
end;

3.1 Build исправленый компонент  
4. Открыл бы все файлы с формами.
5. Каждый файл Pas файл нужно изменить (пробел в конец любой строки) и сохранить.
6. Остаётся убрать, то что добавлено в п.п.1-3
6.1 Build исправленый компонент  
7. Опять открыть все формы, закрыть окна сообщений, через Ignore All, сохранить.

PS. Метод с коленки. Если я ошибся, то поправте меня.
Суть метода в следующем:
При открытии формы считываются свойства.
При первом открытии свойство выворачивается на изнанку.
При втором и далее игнорируется. Определяется это свойством PropChanged.


 
Юрий Зотов ©   (2006-11-25 12:05) [4]

> IDenS   (24.11.06 16:18)  

Насколько я понял, ранее было default False. Значит, там, где свойство было установлено в True, это явно прописано в DFM, а там, где оно оставалось False - не прописано ничего.

ОК. Модицируем компонент (у свойства ставим defaulf True, в конструкторе приcваиваем ему True) и перекомпилируем пакет. Больше ничего не делаем. Что произойдет при открытии старых форм?

Там, где в DFM было прописано True, свойство после открытия формы будет иметь значение True. А там, где не было было прописано ничего, свойство после открытия формы все равно будет иметь значение True.

Вроде бы, именно это и требовалось?

PS
Если нет, то обратите внимание на метод Loaded компонента. Он автоматически вызывается сразу после загрузки DFM - поэтому, перекрыв его, можно скорректировать значение свойства нужным образом. Это тоже позволит добиться правильной работы компонента без перелопачивания кучи DFM и без риска пропустить какие-то из них.


 
DimaBr   (2006-11-27 09:01) [5]

Юрий Зотов ©
> А там, где не было было прописано ничего, свойство после  открытия формы все равно будет иметь значение True.

Там где не было прописано ничего (Old False) - получется TRUE, кажется неправильно...


 
Vlad433 ©   (2006-11-27 17:07) [6]

Пишем маленький эксперт пересохраняющий все формы проекта. В компоненте default убираем вообще. Шерстим экспертом. Добавляем default true. Еще раз шерстим. Все.



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1196332087
{ент
2007-11-29 13:28
2007.12.23
Два простых вопроса


1-1191583482
312kbps
2007-10-05 15:24
2007.12.23
Событие при выходе из приложения


15-1195712208
NX
2007-11-22 09:16
2007.12.23
выручайте! какой загрузчик у висты


2-1195902105
ice321i
2007-11-24 14:01
2007.12.23
Аудит в InterBase 6.5


15-1195587731
Черный Шаман
2007-11-20 22:42
2007.12.23
Ах вон он каков русский компьютер...