Текущий архив: 2004.06.27;
Скачать: CL | DM;
ВнизЗаморочка в коллекции Найти похожие ветки
← →
Navi (2004-06-12 17:46) [0]Уважаемые мастера!
Опробовал пример к статье Юрия Зотова «Коллекции и работа с ними» (на Королевстве Дельфи). Ввел в свойства точки (TSpot) новое свойство Center: TPoint:
TSpot = class(TCollectionItem)
private
FCenterX: integer;
FCenterY: integer;
FColor: TColor;
FCenter: TPoint;
procedure SetCenterX(const Value: integer);
procedure SetCenterY(const Value: integer);
procedure SetColor(const Value: TColor);
procedure SetCenter(const Value: TPoint);
public
constructor Create(Collection: TCollection); override;
published
property CenterX: integer read FCenterX write SetCenterX default 3;
property CenterY: integer read FCenterY write SetCenterY default 3;
property Color: TColor read FColor write SetColor default clBlack;
property Center: TPoint read FCenter write SetCenter;
end;
И для реализации добавил:
procedure TSpot.SetCenter(const Value: TPoint);
begin
FCenter.x:= Value.x;
FCenter.y:= Value.y;
Changed(False)
end;
Но такой код на кнопке формы:
var
s: TSpot;
begin
s:= DappledShape1.Spots.Add;
s.Center.x:= 50; Я
end;
дает Error «Left side cannot be assigned to» при присвоении. Что-то я не догоняю. Помогите, пожалуйста.
← →
KilkennyCat © (2004-06-12 18:00) [1]
> DappledShape1.Spots.Add
разве это можно присвоить ???? Подумайте, чему равняется DappledShape1.Spots.Add в Вашем варианте?
← →
Navi (2004-06-12 18:09) [2]Ну а делаем:
s.CenterX:= 10; и все работает.
← →
U (2004-06-12 18:27) [3]Когда свойство имеет тип структуры,
нельзя присваивать её полям.
Можно только присваивать структуру целиком:
s.Center := Point(10, 10);
← →
Navi (2004-06-13 12:18) [4]Спасибо U. А вот такой вопрос(смежный). Для свойства типа integer можно написать спецификатор default, а для структуры типа TPoint можно как-то это сотворить?
Страницы: 1 вся ветка
Текущий архив: 2004.06.27;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.034 c