
25.10.2010, 12:58
|
Прохожий
|
|
Регистрация: 24.10.2010
Сообщения: 25
Репутация: 10
|
|
Спасибо.
Но вот в чем задача, у меня создан свой класс TAngle, в нем и описана процедура Draw, а в основном юните вызывается.
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TAngel=class
private
Value:integer;
Xpos,Ypos:integer;
Can:TCanvas;
public
constructor create(X,Y:integer;NewCanvas:TCanvas);
procedure SetValue (NewValue:integer);
function GetValue:integer;
procedure Draw;
end;
var Color:TColor;
implementation
procedure TAngel.SetValue (NewValue:integer);
begin
Value:=NewValue mod 360;
end;
constructor TAngel.Create(X,Y:integer;NewCanvas:TCanvas);
begin
inherited Create;
Xpos:=X;
Ypos:=Y;
Value:=45;
Can:=NewCanvas;
end;
procedure TAngel.Draw;
begin
Can.Brush.Color:=color;
color:=clred;
Can.Pie(XPos, YPos, XPos+150, YPos+150,XPos+75+round(75*cos(Value*pi/180)),YPos+75+round(75*sin(Value*pi/180)),XPos+150, YPos+75) ;
end;
function TAngel.GetValue:integer;
begin
result:=Value;
end;
end.
А в основном:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
h:=TAngel.Create (10,10,Image1.Canvas) ;
h1:=TAngel.create(10,10,Image2.Canvas);
end;
procedure TForm1.SetButtonClick(Sender: TObject);
var cod,k:integer;
begin
Image1.Canvas.Brush.Color :=clWhite;
if RadioGroup1.ItemIndex = 0 then
begin
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
val (Edit1.Text,k,cod);
if cod<>0 then Showmessage ('Ошибка') else
begin
h.SetValue(k);
h.Draw;
h.GetValue;
{Edit1.Text:='';
Edit1.SetFocus;}
end end
else
begin
Image2.Canvas.Brush.Color :=clWhite;
Image2.Canvas.Rectangle(0,0,Image2.Width,Image2.Height);
val (Edit1.Text,k,cod);
if cod<>0 then Showmessage ('Ошибка') else
begin
h1.SetValue(k);
h1.Draw;
h1.GetValue;
end;
end;
end;
|