![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Двумерные массивы в испекторе объектов
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]Написать свой редактор