Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Dibujar linea en panel

Buenos dias!!!

¿Se puede dibujar una linea en un Panel?, tengo el siguiente código:


Código Delphi [-]
if tipo_pantalla_=3 then begin;
        statictext2.Font.Color :=clWindowText;
        statictext2.Caption:='En Varios Puntos.';
        panel4.Visible:=true;
        statictext3.Font.Color :=clblue;
        statictext3.Caption:='DESABILITADO.';
        panel1.Enabled:=false;
           // Dibujamos lo que falta.
               with panel4 do
                   begin
                    canvas.Pen.Color:=clBlack;
                    canvas.Pen.Width:=1;
                    canvas.Pen.Style:=psSolid;
                    canvas.MoveTo(500,500);
                    canvas.LineTo(1000,1000);
                  end;
      end;

Pero la linea me sale por detrás del Panel , buscando en ayuda he leido que lo suyo sería usar un Paintbox.

Gracias

Este mensaje no debería estar aquí, sino en gráficos, pero no se borrarlo. Perdón

Última edición por Iron fecha: 28-03-2009 a las 12:47:37. Razón: Mal ubicado
Responder Con Cita
  #2  
Antiguo 30-03-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Iron Ver Mensaje
Este mensaje no debería estar aquí, sino en gráficos, pero no se borrarlo.
Perdón
No hay problema, ya te lo muevo yo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 30-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, así directo no puedes acceder al Canvas del Panel, primero tienes que desprotegerlo defínete este tipo en tu unit.

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

con eso ya deberías poder acceder al Canvas del Panel, sino, tienes que usar algún componentes que tenga el Canvas, como el TPaintBox, TImage......

Sobre como lo tienes no te esta dibujando detras, esta tomando el Canvas del formulario es por eso que te lo dibuja en el formulario.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 31-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
No me sale , al poner
Código Delphi [-]
TPanel = class(ExtCtrls.TPanel);

Me da error, el primero: (Expected ´:´ but ´=´found) lo cambié y ahora me da el siguiente error: (Expected an identifier but class found), espera un identificador pero encuentra una clase .

¿Alguna sugerencia, gracias?
Responder Con Cita
  #5  
Antiguo 31-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Iron Ver Mensaje
Me da error, el primero: (Expected ´:´ but ´=´found) lo cambié y ahora me da el siguiente error: (Expected an identifier but class found), espera un identificador pero encuentra una clase .

¿Alguna sugerencia, gracias?
Hola de nuevo, tienes que definirlo como un nuevo tipo.

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TPanel = class(ExtCtrls.TPanel);
 
type
  TForm1 = class(TForm)
    Panel1: TPanel;
  private
    { Private declarations }
  ..................................

fijate donde lo he puesto, con eso no debería darte errores.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 31-03-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Doy fe de que lo propuesto por Caro, funciona correctamente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 01-04-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
He puesto el nuevo Type y no da fallo ninguno, pero no se ve :

Código Delphi [-]
if tipo_pantalla_=3 then begin;
        statictext2.Font.Color :=clWindowText;
        statictext2.Caption:='En Varios Puntos.';
        panel4.Visible:=true;
        statictext3.Font.Color :=clblue;
        statictext3.Caption:='DESABILITADO.';
        panel1.Enabled:=false;
           // Dibujamos lo que falta.
               with Panel4 do
                   begin
                    canvas.Pen.Color:=clBlack;
                    canvas.Pen.Width:=1;
                    canvas.Pen.Style:=psSolid;
                    canvas.MoveTo(500,500);
                    canvas.LineTo(1000,1000);
                  end;
      end;
Si en lugar de poner Panel4, pongo el nombre del formulario, la linea se ve donde no hay Panel´s.Gracias por vuestras respuestas
Responder Con Cita
  #8  
Antiguo 01-04-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Según te he comentado yo mismo he hecho la prueba y funciona correctamente, lo que puede ocurrir es que tus coordenadas están fuera virtualmente del Tpanel y por eso no se ve nada.

Prueba por ejemplo con:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with panel1 do
   begin
   canvas.Pen.Color:=clBlack;
   canvas.Pen.Width:=1;
   canvas.Pen.Style:=psSolid;
   canvas.MoveTo(10,10);
   canvas.LineTo(500,500);
  end;
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 02-04-2009
Davidcfres Davidcfres is offline
Miembro
 
Registrado: ago 2007
Ubicación: Francia
Posts: 10
Poder: 0
Davidcfres Va por buen camino
Hola Iron,

Caro tiene razon, no puedes utilizar el canvas de un TPanel directamente.

la unica solucion es crear una nueva class :
Código Delphi [-]
 
type
  TMyPanel = class(TPANEL);
 
(....)
 
procedure TForm4.Button2Click(Sender: TObject);
begin
  TMyPanel(Panel1).canvas.Pen.Color:=clBlack;
  TMyPanel(Panel1).canvas.Pen.Width:=1;
  TMyPanel(Panel1).canvas.Pen.Style:=psSolid;
  TMyPanel(Panel1).canvas.MoveTo(10,10);
  TMyPanel(Panel1).canvas.LineTo(500,500);
end;


Nota :
cuando escribes :
Código Delphi [-]
 
            with Panel4 do
                   begin
                    canvas.Pen.Color:=clBlack;
                    canvas.Pen.Width:=1;
                    canvas.Pen.Style:=psSolid;
                    canvas.MoveTo(500,500);
                    canvas.LineTo(1000,1000);
                  end;

"with Panel4" no permite acceder al canvas del Panel pero al canvas de la form.

David
Responder Con Cita
  #10  
Antiguo 02-04-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Davidcfres Ver Mensaje
Código Delphi [-]

type
TMyPanel = class(TPANEL);

(....)

procedure TForm4.Button2Click(Sender: TObject);
begin
TMyPanel(Panel1).canvas.Pen.Color:=clBlack;
TMyPanel(Panel1).canvas.Pen.Width:=1;
TMyPanel(Panel1).canvas.Pen.Style:=psSolid;
TMyPanel(Panel1).canvas.MoveTo(10,10);
TMyPanel(Panel1).canvas.LineTo(500,500);
end;
Hola, si defines tu tipo de esta forma, con el mismo nombre, ya no necesitas hacer el Cast y ya no va a tomar el Canvas del formulario

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

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #11  
Antiguo 02-04-2009
Davidcfres Davidcfres is offline
Miembro
 
Registrado: ago 2007
Ubicación: Francia
Posts: 10
Poder: 0
Davidcfres Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola, si defines tu tipo de esta forma, con el mismo nombre, ya no necesitas hacer el Cast y ya no va a tomar el Canvas del formulario
Claro... estoy completamente de acuerdo.
pero creo que con esta modificacion el typo es diferente (todos los protected son accesibles) , y por eso prefiero utilisar otro nombre...
Responder Con Cita
  #12  
Antiguo 03-04-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Ya consigo ver la linea en el Panel, he probado las dos versiones que poneis y funcionan bien , Gracias a todos.
Una última cosita, cuando creo la linea en el formulario, esta no se ve por el Panel y si la creo en el Panel, del mismo no sale. ¿Se puede crear una linea que se vea en los dos sitios?.

Gracias y un saludo
Responder Con Cita
  #13  
Antiguo 04-10-2013
Sedanbur Sedanbur is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 2
Poder: 0
Sedanbur Va por buen camino
Alguien me puede decir de donde puedo obtener la libreria Timage??? muchas gracias!!
Responder Con Cita
  #14  
Antiguo 04-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Sedanbur, bienvenido a Club Delphi .

Te invitamos a que leas nuestra guía de estilo.

El componente TImage, lo podes encontrar en la pestaña "Additional".

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #15  
Antiguo 06-10-2013
Sedanbur Sedanbur is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 2
Poder: 0
Sedanbur Va por buen camino
Smile

Gracias por la respuesta y bienvenida, ya lei el enlace,. y encontre el componente TImage... hace mucho que no programo en Delphi..(desde el 2000) y estoy un poco oxidado.. jejjee.. tengo un par de proyectos para hacer, asi que seguro que estare por estos lados bastante seguido... saludos
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
Insertar un Panel dentro de otro panel edgwin OOP 3 22-11-2008 17:22:16
Dibujar línea dicatek Gráficos 8 29-07-2006 16:47:26
mostrar fichero linea a linea torete_86 C++ Builder 4 30-01-2006 20:14:39
Traza linea por linea problemas zugazua2001 Varios 2 24-10-2005 08:16:32
¿Cómo borrar un grid sin tener que ir línea a línea? Isaac Varios 2 18-02-2004 16:13:14


La franja horaria es GMT +2. Ahora son las 13:11:14.


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