Быстрый способ изменить свойство многих форм в проекте Delphi? - PullRequest
5 голосов
/ 14 января 2009

Я думал, что в GExperts что-то есть, но я не вижу этого, если есть.

Мне нужно изменить свойство SCALED (от значения по умолчанию TRUE до FALSE) в каждой форме в проекте, который содержит около 100 различных форм. Поскольку значение SCALED по умолчанию равно TRUE, оно фактически не отображается в виде строки в файле .DFM (при просмотре в виде текста), поэтому я ничего не могу "получить" с помощью GREP (и т. Д.).

Может кто-нибудь предложить быстрый способ установки этого свойства во всех этих формах? Формы являются подклассами различных классов, и я действительно не хочу создавать своего рода промежуточного потомка TForm, который переопределяет свойство SCALED - отчасти потому, что я попытался (кратко) сделать это и обнаружил, что для свойства SCALED задано значение false после унаследованное создание не имело значения для формы, и установка его до унаследованного создания вызвало исключение. : -)

Кто-нибудь получил какие-либо предложения? Я действительно хочу не открывать все эти формы одну за другой, если смогу помочь, хотя бы потому, что я обязательно пропущу одну!

Ответы [ 3 ]

8 голосов
/ 14 января 2009

Я бы порекомендовал изменить все ваши формы, чтобы они произошли от общего предка. Тогда в будущем вы можете просто изменить базовый класс, и это будет исправлено везде.

Обычно я предпочитаю всегда использовать пользовательский класс-потомок вместо стандартного, который я буду часто использовать по этой конкретной причине.

7 голосов
/ 14 января 2009

При условии, что все ваши файлы DFM не двоичные, а текстовые (что является хорошей идеей, если вам не требуется совместимость с Delphi 4 или более ранней версией), вы, конечно, можете использовать grep / sed / awk. Формат DFM не фиксированный, а вместо

  OldCreateOrder = False
  Scaled = False

может также содержать

  OldCreateOrder = False Scaled = False

Таким образом, вы можете использовать grep для одного другого свойства, которое есть только в TForm, для которого во всех ваших формах установлено значение, хранящееся в DFM (кандидатом OldCreateOrder), и заменить строки другой строкой, содержащей два свойства.

Формат будет исправлен при следующем сохранении этой формы в IDE.

Edit:

Если ваши формы являются двоичными, используйте инструмент convert.exe в каталоге bin Delphi (используйте полный путь, поскольку в Windows есть еще один convert.exe), чтобы преобразовать DFM в текст, затем добавьте отсутствующее свойство, затем ( по желанию) преобразовать DFM обратно в двоичный файл. А если вас не устраивает странный формат - конвертируйте DFM из текста в двоичный файл и обратно в текст, это даст вам правильно отформатированный текстовый файл DFM. Все это легко написано в сценарии.

2 голосов
/ 01 апреля 2009

Да, GExpert включает эксперта «Задание свойств компонента». У него есть режим «симуляции», чтобы увидеть, что он будет делать. Этот инструмент полезен для деактивации наборов данных или соединений с базой данных перед компиляцией ваших приложений.

...