Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Двумерные массивы в испекторе объектов


dosik ©   (2004-07-07 16:30:00) 

Уважаемые мастера. Кто нибудь из Вас сталкивался когда-нибудь с редактированием думерного массива в испекторе объектов. С одномерным все понятно - TCollection. А что с двумерным??? TCollection в TCollection лезть не хочет. Не подкините идейку?


Mim1   (2004-07-08 07:49:00) [1]


> [5] dosik   (07.07.04 23:01)

А мой пример смотрел? Теперь делаем тупимеханическую работу с смотри что есть у меня и чего нет у тебя.
Я ведь дал вам пример без лишностей. :|


dosik   (2004-07-07 23:01:00) [2]

Написал что-то вроде этого. Работает, но вот только в дизайнйне не хочет вложенный лист открыватся в виде отдельного окна (((


Mim1   (2004-07-07 17:22:00) [3]


>  TCollection в TCollection лезть не хочет

Еще как хочет.

unit Button1;

interface

uses
 SysUtils, Classes, Controls, StdCtrls;

type
 TFirstCol = class;
 TFirstColItem = class;
 TSecondCol = class;
 TSecondColItem = class;

 TButton1 = class(TButton)
 private
   FFirstCol : TFirstCol;
 protected
   { Protected declarations }
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property FirstCol : TFirstCol read FFirstCol write FFirstCol;
 end;

 TFirstCol = class(TCollection)
 private
   FOwner : TPersistent;
 protected
   function GetOwner: TPersistent; override;
 public
   constructor Create(_Owner:TPersistent); reintroduce;
 published

 end;

 TFirstColItem = class(TCollectionItem)
 private
   FSecondCol : TSecondCol;
 protected
   function GetOwner: TPersistent; override;
 public
   constructor Create(Collection: TCollection); override;
   destructor Destroy; override;
 published
   property SecondCol : TSecondCol read FSecondCol write FSecondCol;
 end;

 TSecondCol = class(TCollection)
 private
   FOwner : TPersistent;
 protected
   function GetOwner: TPersistent; override;
 public
   constructor Create(_Owner:TPersistent); reintroduce;
 published

 end;

 TSecondColItem = class(TCollectionItem)
 private

 protected

 public

 published

 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Standard', [TButton1]);
end;

{ TFirstColItem }

constructor TFirstColItem.Create(Collection: TCollection);
begin
 inherited;
 FSecondCol := TSecondCol.Create(self);
end;

destructor TFirstColItem.Destroy;
begin
 FSecondCol.Free;
 inherited;
end;

function TFirstColItem.GetOwner: TPersistent;
begin
 Result := Collection;
end;

{ TButton1 }

constructor TButton1.Create(AOwner: TComponent);
begin
 inherited;
 FFirstCol := TFirstCol .Create(self);
end;

destructor TButton1.Destroy;
begin
 FFirstCol.Free;
 inherited;
end;

{ TFirstCol }

constructor TFirstCol.Create(_Owner: TPersistent);
begin
 inherited Create(TFirstColItem);
 FOwner := _Owner;
end;

function TFirstCol.GetOwner: TPersistent;
begin
 result := FOwner;
end;

{ TSecondCol }

constructor TSecondCol.Create(_Owner: TPersistent);
begin
 inherited Create(TSecondColItem);
 FOwner := _Owner;
end;

function TSecondCol.GetOwner: TPersistent;
begin
 result := FOwner;
end;

end.


Вы просто не умеете их готовить. (с)  <->


Sandman25   (2004-07-07 16:36:00) [4]

Отказаться от идеи редактирования в design-time или представлять в виде одномерного массива.
Если есть желание, можно попробовать представлять в виде TStrings, и парсить строки, каждая из которых представляет собой конкатенацию одной строки массива. Может, еще есть способы.


dosik   (2004-07-07 16:32:00) [5]

А как-нибудь побыстрей?


Sandman25   (2004-07-07 16:30:00) [6]

Написать свой редактор


Наверх

Титульная страница Поиск, карта сайта Написать письмо