Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];

Вниз

Изменение published свойств компонентов   Найти похожие ветки 

 
pasha_golub ©   (2009-05-29 13:48) [0]

Тут вот надо бы мне удалить пару свойств published, и переиначить опеределине типа для одного свойства.

Как бы это красиво сделать, чтобы юзеру было не больно, когда он загрузит форму?


 
Юрий Зотов ©   (2009-05-29 16:59) [1]

Без перекомпиляции - вряд ли получится.

А если с перекомпиляцией, то надо сначала пролопатить DFM. Могу выслать самопальный компонент, который позволяет этот приятнейший процесс частично автоматизировать.

Работает по принципу SAX - парсит DFM (хоть текстовые, хоть бинарные) и генерит события. В обработчиках этих событий можно вытворять что угодно.

То есть: делаем служебный проект, в нем кидаем на форму этот компонент и пишем обработчики его событий, а в них - все, что хотим. Потом запускаем этот проект и натравливаем его на каталог с исходниками (предварительно их забэкапивши, на всякий случай).

Потом соответственно переделываем твой компонент и перекомпилируем его пакет, а потом - перекомпилируем весь проект. Вуаля.


 
Игорь Шевченко ©   (2009-05-29 17:01) [2]


> Работает по принципу SAX - парсит DFM (хоть текстовые, хоть
> бинарные) и генерит события. В обработчиках этих событий
> можно вытворять что угодно.


Юра, а он у тебя свойства в элементах Collection не научился обрабатывать ?
Если да, то был бы крайне признателен за апдейт...


 
Тимохов_   (2009-05-29 17:03) [3]

я руками делаю такое - alt+f7 в Total Commander по dfm (есно в тексте они должны быть), котом открываю все в notepad++, делаю поиск сроки по открытым файлам, меняю - либо ручками либо заменой по всем файлам (notpad++ это умеет делать).


 
pasha_golub ©   (2009-05-29 19:12) [4]

Уточню. Я классы отдаю юзеру. Инталлятором. То есть он бедняга у себя на машине делает апдейт, запускает ИДЕ, а тут ему хренякс: "Property trampampam doesn"t exist. Do you want to ignore?"

В принципе DevExpress таким не гнушался, если я не ошибаюсь. они просто в Release Notes прямо писали,мол при загрузке будет ругаться, игнорируйте.

Это еще хорошо, что компонент-то специфический, то есть он явно будет заюзан не более чем один раз на все приложение. А если там кнопка какая, али еще чего. Что неужели так и таскать за собой deprecated properties.

Кстати, идею вот толко что придумал. А если сначала эти свойства понизить до public, а потом в следующий релиз вообще и выкинуть. Сработает?


 
Юрий Зотов ©   (2009-05-30 19:51) [5]

> А если сначала эти свойства понизить до public...

... то при загрузке старого DFM все равно будет "Property trampampam doesn"t exist" (из-за отсутствия RTTI на них).

Тогда уж лучше сразу их выкинуть.


 
Petr V. Abramov ©   (2009-06-01 11:58) [6]


> Юрий Зотов ©   (30.05.09 19:51) [5]


> Тогда уж лучше сразу их выкинуть.

они могут быть в коде задействованы, не только в dfm, сначала эти свойства понизить до public гуманнее с этой т.з.


 
Юрий Зотов ©   (2009-06-01 14:02) [7]


> Petr V. Abramov ©   (01.06.09 11:58) [6]

Рубить хвост по кусочкам?
:o)


 
test ©   (2009-06-01 14:28) [8]

pasha_golub ©   (29.05.09 19:12) [4]
DevExpress ***, когда собирается пачка их творений разных версий, проще застрелиться чем заставить это творчество работать.

SUBJ
А ни как нельзя обратную совместимость сделать, оставить оба варианта рабочими и старый и новый?


 
pasha_golub ©   (2009-06-01 14:54) [9]


> test ©   (01.06.09 14:28) [8]


> А ни как нельзя обратную совместимость сделать, оставить
> оба варианта рабочими и старый и новый?


Так и сделал. Но убрать все-таки надо. Не таскать же за собой. Мне все же больше волнует как из перечисляемого типа выкинуть одно значение... Вот его как раз таскать не хочется.


 
test ©   (2009-06-01 15:14) [10]

pasha_golub ©   (01.06.09 14:54) [9]
Через дериктивы препроцессора/*не помню как там они называются*/?


 
pasha_golub ©   (2009-06-01 16:16) [11]


> test ©   (01.06.09 15:14) [10]
> Через дериктивы препроцессора/*не помню как там они называются*/?
>

Например? Не вкурил чего-то...


 
test ©   (2009-06-01 16:42) [12]

uses
{$IFDEF MSWINDOWS}
 Windows, ShellAPI,
{$ELSE}
 Libc,
{$ENDIF}
{$IFNDEF VCL}
 Types,
{$ENDIF}
 Classes;

Я просто не помню как их зовут по человески.))


 
pasha_golub ©   (2009-06-01 18:46) [13]

Директивы условной компиляции их зовут. Я понял о чем речь идет, я не понял просто как их можно использовать.


 
Petr V. Abramov ©   (2009-06-01 22:55) [14]


> Юрий Зотов ©   (01.06.09 14:02) [7]


> Рубить хвост по кусочкам?
> :o)

хвост - не что-то жизненно важное, в данном случае время на зализывание ран лучше больше, чем меньше.


 
test ©   (2009-06-02 06:36) [15]

Я про что то подобное, у сишников стандартная заморочка.
{$IFDEF OLD}
x =  {1,2,3}
{$ELSE}
x =  {1,3,4}
{$ENDIF}


 
pasha_golub ©   (2009-06-02 10:55) [16]


> test ©   (02.06.09 06:36) [15]

А откуда я узнаю, сохранялся ли dfm уже с новыми свойствами или еще был со старыми. Сохранять версию? Как-то уж очень гуманно. :)


 
vuk ©   (2009-06-02 11:09) [17]

to test ©   (01.06.09 14:28) [8]:
>DevExpress ***, когда собирается пачка их творений разных версий, проще
>застрелиться чем заставить это творчество работать.

А вот не надо про DevExpress. У нас достаточно нехилая часть их VCL-ных продуктов заюзана. Никогда проблем не было.


 
vuk ©   (2009-06-02 11:15) [18]

to pasha_golub:
Чтобы не было ругани на отсутствующие свойства, можно попробовать их обработать в DefineProperties.

to test ©   (01.06.09 14:28) [8]:
>DevExpress ***, когда собирается пачка их творений разных версий, проще
>застрелиться чем заставить это творчество работать.

А вот не надо про DevExpress. У нас достаточно нехилая часть их VCL-ных продуктов заюзана. Никогда проблем не было.


 
vuk ©   (2009-06-02 11:17) [19]

Сори за дубль. Отвалился коннект. Можно первое сообщение удалить.


 
test ©   (2009-06-02 11:51) [20]

pasha_golub ©   (02.06.09 10:55) [16]
Да, я про это, поставить им warning что версия старая скоро удалим(depricated).

vuk ©   (02.06.09 11:09) [17]
Когда используются компоненты с 3 по 5 версию в одном проекте, запустить это чудо последствия лоботомии, можно только с бубном и жертвоприношением девственного(в упаковке) железа, а поменять все эти свистульки никчемные на стандартные компоненты низя, пользователь привык и так работает. Любая система которая не поддерживает обратную совместимость ИМХО головная боль.


 
vuk ©   (2009-06-02 12:06) [21]

to test ©   (02.06.09 11:51) [20]:
>Когда используются компоненты с 3 по 5 версию в одном проекте,
>запустить это чудо последствия лоботомии, можно только с бубном и
>жертвоприношением
Одновременно замечательно жили в одном проекте, например, гриды разных версий. Без всяких бубнов. Видимо, что-то делаем не так. :)

>а поменять все эти свистульки никчемные
Ну так нефиг использовать то, что реально не нужно.


 
pasha_golub ©   (2009-06-02 12:22) [22]


> vuk ©   (02.06.09 11:15) [18]
>
> to pasha_golub:
> Чтобы не было ругани на отсутствующие свойства, можно попробовать
> их обработать в DefineProperties.
>

За пинок в нужно направлении был бы очень признателен.


> Юрий Зотов ©   (30.05.09 19:51) [5]
>
> > А если сначала эти свойства понизить до public...
>
> ... то при загрузке старого DFM все равно будет "Property
> trampampam doesn"t exist" (из-за отсутствия RTTI на них).
>  

Не поверил. Проверил. Таки да, ругается. Опыт - критерий истинности.


> vuk ©   (02.06.09 11:15) [18]


> А вот не надо про DevExpress. У нас достаточно нехилая часть
> их VCL-ных продуктов заюзана.

Особых проблем тоже не наблюдаю с тех пор, как ушел от нас парень, желавших странного, а именно правил безбожно генофонд ДевЭкспрессов. С тех пор у нас только одна правка, без которой и правда никак.


 
pasha_golub ©   (2009-06-02 12:24) [23]


> test ©   (02.06.09 11:51) [20]
>
> pasha_golub ©   (02.06.09 10:55) [16]
> Да, я про это, поставить им warning что версия старая скоро
> удалим(depricated).


Я не смог поставить deprecated для свойств. А вручную поднимать {$MESSAGE WARN "This property is deprecated"} как-то стремно. Меня юзерь матюгать будет.


 
pasha_golub ©   (2009-06-02 12:36) [24]

> vuk ©   (02.06.09 11:15) [18]
>
> to pasha_golub:
> Чтобы не было ругани на отсутствующие свойства, можно попробовать
> их обработать в DefineProperties.
>

Нашел. Вот ведь. Изящно, мать его за ногу. Век живи - век учись. Спасибо!


 
vuk ©   (2009-06-02 12:38) [25]

to pasha_golub ©   (02.06.09 12:22) [22]:
>За пинок в нужно направлении был бы очень признателен.
DefineProperties предназначен для сохранения/загрузки не-published свойств, вызывается из TReader, если RTTI для свойства не найдена. Собственно, можно при помощи него сделать отработку свойства, которое в DFM-е еще есть, а в компоненте уже нет. Как использовать - смотри генофонд, он там много где заюзан.


 
pasha_golub ©   (2009-06-02 13:17) [26]

Пасиб, Леш! Именно то, что нужно. +100


 
pasha_golub ©   (2009-06-02 15:20) [27]

C убиранием свойств реализовал. Спасибо. А как отсловить ситуацию когда меняется тип свойства? В моем конкретном случае:


type
TPropOption = (opFirst, opSecond, opThird);
TPropOptions = set of TPropOption;

...
 property PropProperty: TPropOptions;


И надо мне допустим opSecond убрать. Как этот момент отловить?
Заранее спасибо


 
atruhin ©   (2009-06-03 05:22) [28]

> [27] pasha_golub ©   (02.06.09 15:20)

Сделать чтобы в текущей версии значение не устанавливалось/сохранялось.
А когда нибудь, потом, убрать.


 
pasha_golub ©   (2009-06-03 13:30) [29]


> atruhin ©   (03.06.09 05:22) [28]


> Сделать чтобы в текущей версии значение не устанавливалось/сохранялось.
>
> А когда нибудь, потом, убрать.

Мысли сходятся. :)) Но я любитель рубки Гордиевых узлов. Думал, есть изящный метод.



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

Форум: "Прочее";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.005 c
15-1243504952
Petr V. Abramov
2009-05-28 14:02
2009.08.02
Иллюстрации в детской книжке


15-1243360649
dmk
2009-05-26 21:57
2009.08.02
Че-то с ХДД


2-1238673155
bagos
2009-04-02 15:52
2009.08.02
Реальные данные вместо ссылок


15-1243586875
Дмитрий Белькевич
2009-05-29 12:47
2009.08.02
FreeAndNil против Free. Интересная концепция.


6-1205321086
webSQLNeederr
2008-03-12 14:24
2009.08.02
Как залить файлы на ФТП програмно?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский