|
#1
|
|||
|
|||
Присвоение класса
вообщем то суть такая есть массив объктов А1 класса С1
одно из свойств P1 которого объект класса С2 есть объект O1 класса С3 одно из свойств P1 которого объект класса С2 есть действия выполняемое над массивом объектов: при клике мыши на элементе массива А1[i,j] выполняется A1[i,j].P1:=O1.P1; теперь сообственно вопрос: в данном случае в A1[i,j].P1 содержится ссылка на O1.P1 а мне надо чтоб в нем содержались значения пропертей класса, но чтоб не было ссылки на объект О1. Кроме банального переприсваивания свойст есть какой нить еще способ? что то я туплю Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#2
|
||||
|
||||
create, assign?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
1. наследовать С2 от TPersistent
2. переопределить метод Assign в С2 3. использовать в дальнейшем Assign Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TC2 = class(TPersistent) public SProp: String; IProp: Integer; procedure Assign(Source: TPersistent); override; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TC2 } procedure TC2.Assign(Source: TPersistent); begin SProp:=TC2(Source).SProp; IProp:=TC2(Source).IProp; end; procedure TForm1.FormCreate(Sender: TObject); var c21: TC2; c22: TC2; begin c21:=TC2.Create; c22:=TC2.Create; c21.SProp:='hello world'; c21.IProp:=255; c22.Assign(c21); c21.Free; ShowMessage(c22.SProp+' '+IntToStr(c22.IProp)); c22.Free; end; end. Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 12.11.2010 в 08:59. |
#4
|
|||
|
|||
Спасибо.
именно так вчера и решил. Но все равно спасибо огромное за ответ. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |