Как присвоить все значения полей одного класса, другому такому же классуDelphi , Компоненты и Классы , RTTIАвтор: Serge Gubenko How can I assign all property values (or if it's not possible only published property values, or some of them) of one class (TComponent) to another instance of the same class? What I want to do is: MyComponent1. {property1} := MyComponent2. {property1}; {...} MyComponent2. {propertyN} := MyComponent2. {propertyN}; Is there a better and shorter way to do this? I tried this: MyComponent1 := MyComponent2; But it doesn't work. Why not? Can I point to the second component ? MyComponent2 and MyComponent1 are pointers to your components, and this kind of assigment leads to MyComponent1 pointing to MyComponent2. But it will not copy its property values. A better way is to override the assign method of your control, do all property assignment there and call it when you need to copy component attributes. Here's example: procedure TMyComponent.Assign(Source: TPersistent); begin if Source is TMyComponent then begin property1 := TMyComponent(Source).property1; { ... } end else inherited Assign(Source); end; To assign properties you'll need to set this line in the code:
MyComponent1.Assign(MyComponent2); Как присвоить все значения полей одного класса другому такому же классу можно через переопределение метода Assign или использовать оператор := для отдельных свойств. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |