Для редактирования
Завести на форме несколько панелек(Можно использовать TPageControl)
и процедур типа таких
Код:
type TForm1=class(TForm)
....
private
CurrentCircle:TCircle;
....
end;
Procedure TForm1.EditFigure(F:TFigure);
Begin
if Figure Is TCircle then begin
// спрятать все панели, кроме панели для окружности,
// или, если TPageControl, переключиться на нужную страницу
CurrentCircle:=Figure As TCircle;
ShowCircle();
end
End;
Procedure TForm1.ShowCircle();
Begin
EditCircleRadius.Text:=Format('%f',[CurrentCircle.Radius]);
EditCircleX.Text:=Format('%d',CurrentCircle.Center.X]);
EditCircleY.Text:=Format('%d',CurrentCircle.Center.Y]);
end;
При выборе фигуры в списке Вызвать EditFigure.
Соответственно на панельке для работы с окружностями нужны Едиты EditCircleRadius,EditCircleX и EditCircleY, а так же кнопки ButtonCircleSave и ButtonCircleCancel.
Код:
Procedure TForm1.ButtonCircleSave (Sender :TObject);
var
O:TPoint;
begin
CurrentCircle.Radius:=StrToFloat(EditCircleRadius.Text);
O.X:=StrToInt(EditCircleX.Text);
O.Y:=StrToInt(EditCircleY.Text);
CurrentCircle.Center:=O;
end;
Procedure TForm1.ButtonCircleCancel (Sender :TObject);
begin
ShowCircle();
end;
Остальное сам