Crear un nuevo objeto que utilice a Canvas
Mi problemas es que estoy haciendo un ejercicio de un tablero de ajedres y he creado un objeto que se llama TTablero, este objeto tiene un método que se denomina dibujar, ahora cuando utilizo la clase tcanvas me da un error en tiempo de ejecución.
unit Unit1;
interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TTablero = class
private
public
procedure Dibujar(PosX, PosY, Largo, Ancho : Integer; Color: TColor);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
end;
{ TTablero }
procedure TTablero.Dibujar(PosX, PosY, Largo, Ancho: Integer; Color: TColor);
var
I, J : integer;
ACanvas: TCanvas;
begin
for I := 1 to 8 do
for J := 1 to 8 do
begin
if ((i+j) mod 2)=0 then //Canvas.Brush.Color:=Color else canvas.Brush.Color:=clWhite;
Acanvas.Rectangle(PosX+10+(i*24), PosY+15+(j*24), PosX+35+(i*24), PosY+40+(j*24));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
TableroA: TTablero;
begin
TableroA := TTablero.Create;
TableroA.Dibujar(20, 20, 11,11, clRed);
end;
end.
unit Unit1;
interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TTablero = class
private
public
procedure Dibujar(PosX, PosY, Largo, Ancho : Integer; Color: TColor);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
end;
{ TTablero }
procedure TTablero.Dibujar(PosX, PosY, Largo, Ancho: Integer; Color: TColor);
var
I, J : integer;
ACanvas: TCanvas;
begin
for I := 1 to 8 do
for J := 1 to 8 do
begin
if ((i+j) mod 2)=0 then //Canvas.Brush.Color:=Color else canvas.Brush.Color:=clWhite;
Acanvas.Rectangle(PosX+10+(i*24), PosY+15+(j*24), PosX+35+(i*24), PosY+40+(j*24));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
TableroA: TTablero;
begin
TableroA := TTablero.Create;
TableroA.Dibujar(20, 20, 11,11, clRed);
end;
end.
1 respuesta
Respuesta de gaunmanuel
1