Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manejo de Canvas desde funcion en diferente Unit (https://www.clubdelphi.com/foros/showthread.php?t=91044)

compuin 31-10-2016 02:02:39

Manejo de Canvas desde funcion en diferente Unit
 
Necesito que el Form1 al arrancar me muestre en un rectangulo y la funcion que lo hace esta en la Unit2

Algo asi,

Código Delphi [-]
unit Forma1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
Forma1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;

procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Forma1: TForma1;

implementation

uses
Unit2;

{$R *.dfm}


procedure TForma1.FormCreate(Sender: TObject);
begin
Rueda;
end;

end.

////---------------------------------------------

Código Delphi [-]
Unit Forma2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, Math, StdCtrls, Buttons;

procedure rueda;

implementation

procedure rueda;
begin
with TForma1.Image1.Canvas do
begin
Pen.Color := clNavy;
Pen.Width := 5;
Brush.Color := clYellow;
Brush.Style := bsDiagCross;
Ellipse( 160, 10, 260, 110 );
end;
end;

end.


Solo cambie el showmessage pero no genera la rueda,,,sigue el mismo error de Undefined identifier

ElKurgan 31-10-2016 13:30:58

Si el código que has publicado está completo, en la Forma2 no puede ver el TForm1 de ninguna manera. Tendrías que añadirlo a una clausula uses del Forma2.

Yo lo que haría (sobre todo para evitar acoplamiento entre una función y un formulario) sería poner esto:

Código Delphi [-]
procedure rueda(MiCanvas: TCanvas);
begin
  MiCanvas.Pen.Color := clNavy;
  MiCanvas.Pen.Width := 5;
  MiCanvas.Brush.Color := clYellow;
  MiCanvas.Brush.Style := bsDiagCross;
  MiCanvas.Ellipse( 160, 10, 260, 110 );
end;

Y lo llamaría desde Forma1 como

Código Delphi [-]
Rueda(Self.Canvas);

Un saludo


La franja horaria es GMT +2. Ahora son las 11:06:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi