![]() |
![]() ![]() ![]() ![]() |
|
Клонирование свойств элемента управленияDelphi , Компоненты и Классы , Свойства и СобытияКлонирование свойств элемента управления
Оформил: DeeCo
uses
TypInfo;
function CloneProperty(SourceComp, TargetComp: TObject;
Properties: array of string): Boolean;
var
i: Integer;
begin
Result := True;
try
for i := Low(Properties) to High(Properties) do
begin
if not IsPublishedProp(SourceComp, Properties[I]) then Continue;
if not IsPublishedProp(TargetComp, Properties[I]) then Continue;
if PropType(SourceComp, Properties[I]) <> PropType(TargetComp, Properties[I]) then
Continue;
case PropType(SourceComp, Properties[i]) of
tkClass:
SetObjectProp(TargetComp, Properties[i],
GetObjectProp(SourceComp, Properties[i]));
tkMethod:
SetMethodProp(TargetComp, Properties[I], GetMethodProp(SourceComp,
Properties[I]));
else
SetPropValue(TargetComp, Properties[i], GetPropValue(SourceComp, Properties[i]));
end;
end;
except
Result := False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CloneProperty(Button1, Button2, ['Left', 'Font', 'PopupMenu', 'OnClick']) then
ShowMessage('OK');
end;
Перевод контента на русский язык: Это фрагмент кода Delphi, демонстрирующий, как клонировать свойства одного объекта TControl (SourceComp) в другой объект TControl (TargetComp). Функция CloneProperty принимает три параметра: SourceComp, TargetComp и массив имен свойств (Properties), которые нужно клонировать. Она проверяет, существует ли каждое свойство в обоих SourceComp и TargetComp, имеет ли оно тот же тип, и затем устанавливает его значение в TargetComp. Код структурирован хорошо, с четкими объявлениями переменных и блоком try-except для обработки потенциальных ошибок при процессе клонирования. Вот некоторые предложения по улучшению:
Вот альтернативное решение с использованием generics: В этом альтернативном решении я создал класс Помните, что вам нужно создать отдельный модуль для этого generics-класса (например, Клонирование свойств элемента управления в Delphi - функция, позволяющая клонировать определенные свойства между объектами, такие как Left, Font, PopupMenu и OnClick. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Свойства и События ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||