Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизКак в приведённом коде... Найти похожие ветки
← →
^Sanya (2002-11-05 15:31) [0]Как в приведённом коде рациональней получить доступ к св-ву TBase.FileName (или полю FFileName) из класса TTable?
Поскольку они взаимосвязаны, наследовать один от другого не получается.
type
TTable = class
private
FName: string;
procedure SetCell(ACol, ARow: Integer; const Value: string);
function GetCell(ACol, ARow: Integer): string;
public
property Name: string read FName;
property Cells[Col, Row: Integer]: string read GetCell write SetCell;
constructor Create(ATableName: string);
end;
type
TBase = class
private
FFileName: string;
FTableCount: Integer;
procedure SetTableNames;
function GetTable(i: Integer): TTable;
public
property Tables[i: Integer]: TTable read GetTable;
property FileName: string read FFileName;
constructor Create(AFileName: string);
destructor Destroy;
end;
Прошу прощения за лишний код.
Вопрос должен быть простым, но создавать экземпляр класса TBase нельзя, т.к. параметр в TBase.Create и есть FileName.
Заранее благодарен.
← →
MBo (2002-11-05 15:36) [1]пардон, а где в TBase внутреннее поле (или список) типа TTable?
BTW, нехорошо давать название, пересекающееся с имеющимся в VCL
← →
Skier (2002-11-05 15:36) [2]>^Sanya
Не совсем понятна проблема...
> создавать экземпляр класса TBase нельзя
Почему нельзя ?
Нужны более подробные пояснения...
Да! И лучше всё-таки не называть свой класс TTable
(он уже есть...)
← →
SaS13 (2002-11-05 15:38) [3]type
TBase = class
TTable = class
private
FBase: TBase;
FName: string;
procedure SetCell(ACol, ARow: Integer; const Value: string);
function GetCell(ACol, ARow: Integer): string;
public
property Base: TBase read FBase;
property Name: string read FName;
property Cells[Col, Row: Integer]: string read GetCell write SetCell;
constructor Create(ATableName: string);
end;
type
TBase = class
private
FFileName: string;
FTableCount: Integer;
procedure SetTableNames;
function GetTable(i: Integer): TTable;
public
property Tables[i: Integer]: TTable read GetTable;
property FileName: string read FFileName;
constructor Create(AFileName: string);
destructor Destroy;
end;
и добавить в constructor задание FBase
← →
^Sanya (2002-11-05 22:48) [4]
> MBo © (05.11.02 15:36)
> пардон, а где в TBase внутреннее поле (или список) типа
> TTable?
А зачем внутреннее поле типа TTable??? Ведь этот класс в TBase используется просто как тип данных.
> SaS13 © (05.11.02 15:38)
ЭТО КАК????? :
type
TBase = class
TTable = class
...
end;
Два класса в одном разделе type???
Я так не умею.
И что значит "задание FBase"?
← →
SaS13 (2002-11-06 09:13) [5]^Sanya © (05.11.02 22:48)
Попробую объяснить:
type
tOneClass = class;
tTwoClass = class
protected
FOne : tOneClass;
public
constructor Create(AOne: tOneClass);
property One: tOneClass read FOne;
end;
tOneClass = class
protected
FNeedField: string;
public
property NeedField: string read FNeedField;
end;
implementation
//...
constructor tTwoClass.Create(AOne: tOneClass);
begin
// ...
FOne := AOne
end;
Тогда чтобы обратиться к FNeedField из tOneClass тебе надо будет просто написать: One.NeedField.
Уловил мысль?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c