|
Вопрос # 3 286/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты! Необходимо сменить transparent в true для всех лейблов и чекбоксов на всех формах проекта, их порядка сотни, вручную это делать - пустая трата времени. Есть ли какой-ть тулз для автоматизации процессы смены свойства?
 |
Вопрос задал: Phoenix (статус: Посетитель)
Вопрос отправлен: 14 октября 2009, 17:48
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 15 октября 2009, 04:05; участников в обсуждении: 4.
14 октября 2009, 19:57: Вопрос перемещён из тематического раздела Delphi » Оболочка Delphi, компилятор, версии среды и т.д. в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.
|
Ерёмин А.А. (статус: *Администратор), 14 октября 2009, 19:57 [#1]:
Открыть блокнотом dfm-файл и сделать Replace.
|
|
Phoenix (статус: Посетитель), 14 октября 2009, 20:10 [#2]:
вся проблема в том, что свойство по умолчанию "false" не записывается в dfm, поэтому реплейс не подходит.
|
|
Мережников Андрей (статус: Абитуриент), 14 октября 2009, 21:46 [#3]:
обязательно сделать это на стадии проектирования? может в run-time - будет проще?
|
|
Phoenix (статус: Посетитель), 14 октября 2009, 23:22 [#4]:
проект готов, мне нужно просто изменить свойства всех указанных компонентов
|
|
Александр Дубик (статус: 1-ый класс), 15 октября 2009, 04:05 [#5]:
Слегка изменил процедуру, найденную в DelphiWorld. Не очень красиво, но для разового использования пойдёт.
uses
…, TypInfo;
…
procedure SetPropertiesForAllForms(ClassName_, SomeProperty: string; Value: Integer);
procedure SetProperties(Form: TComponent; ClassName, SomeProperty: string; Value: Integer);
var
i: Integer;
PropInfo: PPropInfo;
Component:TComponent;
begin
for i := 0 to Form.ComponentCount - 1 do
begin
Component := Form.Components[i];
if (Component is TControl) and ((Component.ClassName = ClassName)
or (ClassName = 'AllComponents')) then
begin
PropInfo := GetPropInfo(Component.ClassInfo, SomeProperty);
if Assigned(PropInfo) then
SetOrdProp(Component, PropInfo, Integer(Value));
end;
end;
end;
var i: Integer;
begin
with Application do
for i := 0 to ComponentCount - 1 do
if Components[i] is TForm then
SetProperties(Components[i], ClassName_, SomeProperty, Value);
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
i: Integer;
OutPath: String;
begin
OutPath := ExtractFilePath(ParamStr(0)) + 'Modified Forms\';
if not DirectoryExists(OutPath) then MkDir(OutPath);
SetPropertiesForAllForms('TLabel', 'Transparent', 1);
SetPropertiesForAllForms('TCheckBox', 'Transparent', 1);
with Application do
for i := 0 to ComponentCount - 1 do
if Components[i] is TForm then
WriteComponentResFile(OutPath + Components[i].Name + '.dfm', Components[i]);
end;
Думаю комментарии здесь можно опустить.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|