Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2011
rojo raton rojo raton is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 16
Poder: 0
rojo raton Va por buen camino
Problema de diseño y con canvas.

Estoy intentando diseñar una clase TPintor que tenga un método PintarRectangulo() que reciba como parámetro un objeto gráfico sobre el cual se pintará el rectangulo. De antemano Tpintor no sabrá que tipo de objeto recibirá como parámetro, podría ser un Timage,Tlabel,TForm,etc. alguno que implemente el canvas. He visto que esos derivan el Tcanvas de la clase TgraphicControl, intenté usar esa clase en TPintor para trabajar con el canvas pero no me deja hacer lo siguiente
Código Delphi [-]
var
  G : TgraphicControl;
begin
   G:= TgraphicControl.Create(nil);
   g.canvas //me dice "undeclared identifier: canvas"
   g.Free;
end;
identificador no declarado, como si Tgraphiccontrol no conociese al canvas.
No se si se entiende el problema que quiero resolver. Un saludo.
Responder Con Cita
  #2  
Antiguo 23-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El problema está en que Canvas es protected.
La solución mejor es que pases como parámetro el canvas en lugar de un TGraphicControl.

Pero si lo anterior no puede ser, entonces un truco puede ser el siguiente:

Código Delphi [-]
unit Unit1;

interface

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

type
  TG = class(TGraphicControl);
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure graf(G: TgraphicControl);
begin
   TG(G).Canvas.Rectangle(1,30, 60, 60);  // con esto puedo acceder a Canvas... Y pintar un rectángulo
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  graf(Image1);
end;
end.

Saludos.
Responder Con Cita
  #3  
Antiguo 23-10-2011
rojo raton rojo raton is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 16
Poder: 0
rojo raton Va por buen camino
Si, que buen truco!
Gracias escafandra. Me ha servido tu ayuda.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con backgroud del Canvas.TextOut miguel_e Gráficos 1 20-05-2008 18:02:38
Problema con el Canvas de Impresion Delphi 5 cesarlopez Impresión 2 05-02-2006 18:41:07
Problema de diseño con JScrollPane estebanperez JAVA 1 25-02-2004 00:31:39
problema con el canvas superhopi Impresión 1 09-06-2003 15:38:24
Canvas???? craven Gráficos 2 17-05-2003 13:26:02


La franja horaria es GMT +2. Ahora son las 09:51:34.


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
Copyright 1996-2007 Club Delphi