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 24-10-2006
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Thumbs up ¿ y donde esta el canvas del TPanel ?

hola foro como andan espero que bien por que yo por aqui con unas nuevas dudas estaba programando y me salio por hay una duda y es donde esta el canvas del TPanel o mas bien donde esta el canvas de los contenedores diferentes al Form grasias de antemano GULDER
Responder Con Cita
  #2  
Antiguo 24-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En el caso del "TPanel" parece ser que no se "publica" la propiedad "Canvas", que cuenta con ella, puesto que desciende de "TWinControl", que es quien la ofrece.

Podrías derivar un componente de "TPanel" y hacer pública su propiedad "Canvas", o, más sencillamente, declarar un tipo como el siguiente a modo de "clase superpuesta" (busca en el Foro sobre esto).

Código Delphi [-]
type
  TPanel = class(ExtCtrls.TPanel)
  public
    property Canvas;
  end;

Dicho tipo tendrías que declararlo antes que el tipo del formulario que contuviera al "Panel". A continuación un ejemplo de todo esto:

Código Delphi [-]
unit Unit1;

interface

uses
  Forms, StdCtrls, Classes, Controls, ExtCtrls;

type
  TPanel = class(ExtCtrls.TPanel)
  public
    property Canvas;
  end;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Canvas.TextOut(10, 10, 'ClubDelphi.com');
end;

end.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 24-10-2006
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Thumbs up grasias dec

grasias DEC por tu respuesta pero me salto otra duda el problema es que estos paneles los creo en tiempo de ejecucion como podria para asignarle lo que me planteas anteriormente a cualquier panel grasias de antemano GULDER
Responder Con Cita
  #4  
Antiguo 24-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Una vez declares el tipo "TPanel" del modo que se indica arriba puedes utilizarlo en tiempo de ejecución normalmente. Si por ejemplo se tratara de crear un panel en un determinado formulario (unidad) bastaría con algo así, como sabes:

Código Delphi [-]
unit Unit1;

interface

uses
  Forms, Classes, Controls, StdCtrls, ExtCtrls;

type
  TPanel = class(ExtCtrls.TPanel)
  public
    property Canvas;
  end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  panel: TPanel;

procedure TForm1.Button1Click(Sender: TObject);
begin
  panel := TPanel.Create(Self);
  panel.Parent := Self;
  panel.SetBounds(10, 10, 200, 200);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  panel.Canvas.TextOut(10, 10, 'Clubdelphi.com');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  panel.Free;
end;

end.

Sin embargo, si te fijas he llamado al método "TextOut" de "TCanvas" desde "otro botón", y es que desde el primero, es decir, justo después de crear el objeto las cosas no funcionaban tal como esperaríamos... no me preguntes por qué, puesto que aunque supongo algo no sé nada a ciencia cierta.

En todo caso, puedes siempre derivar un clase de "TPanel" y situar esta en una unidad aparte (no como se ve arriba) y utilizar dicha unidad donde te fuera menester, de tal modo que no tuvieras que repetir la declaración del "nuevo tipo" en cada unidad en que te hiciera falta, puesto que además es algo que acaso causara problemas.

Puedes derivar un nuevo tipo al que llames "TPanelEx", por ejemplo, y publicar en el mismo la propiedad "Canvas" (que ya sabes que está ahí desde "TWinControl", pero, sin hacerse pública) y luego utilizar este nuevo tipo; o puedes hacerlo como arriba, es decir, no usar un "TPanelEx" sino el propio "TPanel", aunque en realidad uses el "interpuesto" por nosotros...

Esto último creo que tiene algún que otro inconveniente (solventable, pero, inconveniente) así que... deberás ser tú el que decida lo que mejor te conviene dependiendo de lo que te sea menester llevar a cabo en tu aplicación y cómo lo lleves a cabo.

No sé si esto que digo es una perogrullada o junto con todo lo que he dicho puede servirte de algo. Por otro lado algún compañero podrá aclarar más las cosas (todos se lo agradeceremos) y, también por otro lado, tú mismo puedes seguir exponiendo las dudas que te queden al respecto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 27-10-2006
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Thumbs up dec

grasias por tu gran colaboracion en estos momentos estaba leyendo lo que me dices despues comentare si me sirven
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
¿Dónde está el procesador? marcoszorrilla Humor 4 18-09-2006 05:06:24
Donde esta mi post? aupaneu Conexión con bases de datos 2 31-05-2006 12:56:08
Dios mio!!! Donde está mi IDE? ;-) Elfoscuro JAVA 4 05-10-2005 23:08:01
donde está el error? :S jorodgar Varios 7 17-06-2005 15:32:08
Donde esta el error ?? tgsistemas SQL 2 31-01-2005 14:29:34


La franja horaria es GMT +2. Ahora son las 12:40: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
Copyright 1996-2007 Club Delphi