Ну для начала
Код:
type
TFigura=class
private
FName : String;
public
procedure DrawTo(Canvas:TCanvas);//процедура рисования
virtual;//сама процедура будет определена в наследниках
procedure ToListItem(Item:TListItem);virtual;// процедура записи своих параметров в элемент TListView
function ToString:String;virtual;
function Verirification:Boolean;Virtual;//проверка правильности
function Perimetr:Double;virtual; //периметр фигуры
constructor Create(AName:String);//конструктор;
property Name:String read FName;
end;
procedure TFigura.DrawTo(Canvas:TCanvas);
begin
end;
procedure TFigura.ToListItem(Item:TListItem);
begin
Item.Caption:=Name;
Item.SubItems.Clear;
Item.SubItems.Add('Фигура');
if Verirification then
Item.SubItems.Add('может быть такой!')
else
Item.SubItems.Add('Не может быть');
Item.SubItems.Add(Format('%F',[Perimetr]));
end;
function TFigura.ToString:String;
begin
Result:=Name + ' Фигура ';
if Verirification then
Result:=Result+'может быть такой!'
else
Result:=Result+'Не может быть';
Result:=Result+Format('%F',[Perimetr]);
end;
function TFigura.Verirification:Boolean;
begin
Result:=true;
end;
function TFigura.Perimetr:Double;
begin
Result:=0;
end;
constructor TFigura.Create(AName:String);
begin
inherited;
FName:=AName;
end;
TFigurs = Array of TFigura;
и создать процедурки типа
Код:
procedure DrawAllTo(Canvas:TCanvas;A:TFigurs);
var i:Integer;
begin
for I:=low(A) to high(A) do
A[i].DrawTo(Canvas);
end;
procedure FigursToStrings(List:TStings;A:TFigurs);
var i:Integer;
begin
List.Clear;
for I:=low(A) to high(A) do
List.Add(A[i].ToString);
end;
procedure FigursToListView(List:TListView;A:TFigurs);
begin
//напиши сам
end;
Кроме того, нужны будут процедуры добавления фигур в массив, удаления из него, поиск(По имени)