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 12-06-2005
eljuan eljuan is offline
Registrado
 
Registrado: jun 2005
Posts: 3
Poder: 0
eljuan Va por buen camino
Unhappy ayuda urgente¡¡ como imprimo y guardo timage

hola que tal¡¡
espero y me puedan ayudar, necesito imprimir y guardar varios timages colocados sobre la forma asi como tambien algunas lineas generadas en canvas.
anexo el codigo del programa, dicho programa pretende ser un editor de mapas conceptuales. y por tal motivo necesito guardar e imprimir. saben necesito ayuda lo mas pronto posible ya que dicho programa es la calificacion semestral de la universidad y estoy a punto de entregar dicho programa en un par de dias.

cualquier ayuda y/o opnion sera bienvenida y muy agradecida

Código Delphi [-]
  unit proyecto;
 interface
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls, Menus;
 
 type
   TForm1 = class(TForm)
     Button1: TButton;
     Button2: TButton;
     Button3: TButton;
     Edit1: TEdit;
     Button4: TButton;
     PrintDialog1: TPrintDialog;
     MainMenu1: TMainMenu;
     Archivo1: TMenuItem;
     Abrir1: TMenuItem;
     Guardar1: TMenuItem;
     imprimir1: TMenuItem;
     Salir1: TMenuItem;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
     procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure Button3Click(Sender: TObject);
     procedure Button4Click(Sender: TObject);
     procedure Salir1Click(Sender: TObject);
     procedure imprimir1Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
     Capturing:Boolean;
     MouseDownSpot:TPoint;
     NumFiguras:Integer;
     procedure _IMGMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure _IMGMouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
     procedure _IMGMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     procedure _IMGMouseMove1(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure _IMGMouseUp1(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
     procedure _IMGMouseDown1(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    
   public
     { Public declarations }
   end;
 var
   Form1: TForm1;
    NumFiguras: integer;
    elipse:TShape;
    edit_elipse:tedit;
    rec:TShape;
    edit_rec:tedit;
 implementation
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   // Crear un componentes
   edit_elipse:=tedit.Create(self);
   edit_elipse.Parent:=self;
   edit_elipse.BorderStyle:=bsnone;
   elipse := TShape.Create(Self);
   elipse.Parent := Self;
   // Posicion
   elipse.Top := 100;
   elipse.Left := 100;
   edit_elipse.Top:=elipse.Top +20;
   edit_elipse.Left:=elipse.Left+20;
   // Tamaño
   elipse.Height := 50;
   elipse.Width := 100;
   edit_elipse.height:=20;
   edit_elipse.Width:=70;
   // Tipo de elemento
   elipse.Shape := TShapeType(stEllipse);
   // Asignar para que pueda arrastrarse
   elipse.OnMouseMove := _IMGMouseMove;
   elipse.OnMouseDown := _IMGMouseDown;
   elipse.OnMouseUp := _IMGMouseUp;
 
   edit_elipse.OnMouseDown := _IMGMouseDown;
   edit_elipse.OnMouseMove := _IMGMouseMove;
   edit_elipse.OnMouseUp := _IMGMouseUp;
   // Otras propiedades
   elipse.Cursor := crHandPoint;
   elipse.Brush.Color := RGB(120,250,23);
   edit_elipse.Brush.Color:=rgb(120,250,23);
   edit_elipse.Cursor:=crHandPoint;
 end;
  
 procedure TForm1._IMGMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
 begin
   Capturing := true;
   MouseDownSpot.X := x;
   MouseDownSpot.Y := Y;
  
 
 end;
 procedure TForm1._IMGMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
     edit_elipse.left:=elipse.left+15;
     edit_elipse.top:=elipse.top+15;
     if Capturing then begin
     TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
     TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
   end;
 
 end;
 procedure TForm1._IMGMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 begin
   if Capturing then begin
     ReleaseCapture;
     Capturing := false;
     TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
     TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
   end;
 
 end;
  
 procedure TForm1.Button2Click(Sender: TObject);
 
 begin
   // Crear un componentes
   edit_rec:=tedit.Create(self);
   edit_rec.Parent:=self;
   edit_rec.BorderStyle:=bsnone;
   rec := TShape.Create(Self);
   rec.Parent := Self;
   // Posicion
   rec.Top := 100;
   rec.Left := 100;
   edit_rec.Top:=rec.Top +20;
   edit_rec.Left:=rec.Left+20;
   // Tamaño
   rec.Height := 50;
   rec.Width := 100;
   edit_rec.height:=20;
   edit_rec.Width:=70;
   // Tipo de elemento
   rec.Shape := TShapeType(stRoundRect);
   // Asignar para que pueda arrastrarse
   rec.OnMouseMove := _IMGMouseMove1;
   rec.OnMouseDown := _IMGMouseDown1;
   rec.OnMouseUp := _IMGMouseUp1;
 
   edit_rec.OnMouseDown := _IMGMouseDown;
   edit_rec.OnMouseMove := _IMGMouseMove;
   edit_rec.OnMouseUp := _IMGMouseUp;
   // Otras propiedades
   rec.Cursor := crHandPoint;
   rec.Brush.Color := RGB(120,250,23);
   edit_rec.Brush.Color:=rgb(120,250,23);
   edit_rec.Cursor:=crHandPoint;
 end;
 procedure TForm1._IMGMouseDown1(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
 begin
   Capturing := true;
   MouseDownSpot.X := x;
   MouseDownSpot.Y := Y;
  
 
 end;
 procedure TForm1._IMGMouseMove1(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
     edit_rec.left:=rec.left+15;
     edit_rec.top:=rec.top+15;
     if Capturing then begin
     TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
     TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
   end;
 
 end;
 procedure TForm1._IMGMouseUp1(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 begin
   if Capturing then begin
     ReleaseCapture;
     Capturing := false;
     TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
     TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
   end;
 
 end;
  
 
 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 begin
 if ssLeft in Shift then
     self.canvas.moveto(x,y);
   if ssRight in Shift then
     self.canvas.lineto(x,y);
 canvas.TextOut(x,y,edit1.text);
 end;
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 edit1.Visible:=true;
 button4.Visible:=true;
 end;
 procedure TForm1.Button4Click(Sender: TObject);
 begin
 edit1.Visible:=false;
 button4.Visible:=false;
 end;
 procedure TForm1.Salir1Click(Sender: TObject);
 begin
   close;
 end;
 procedure TForm1.imprimir1Click(Sender: TObject);
 begin
 PrintDialog1.Execute;
 end;
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 end;
 end.

Última edición por Neftali [Germán.Estévez] fecha: 13-06-2005 a las 10:06:11. Razón: Añadir TAG's
Responder Con Cita
  #2  
Antiguo 13-06-2005
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
Antes de nada...

(1) No repitas el mismo mensaje varias veces.
(2) Si utilizas TAG's en tu código, éste se leerá mejor...

En cuanto a la pregunta, puedes utilizar el propio Print del formulario; No es muy sofisticado, pero funciona, y dado la urgencia...
Haz los siguientes cambios y prueba.

Si realizas un:

Código Delphi [-]
    Self.Print;

verás que funciona, pero imprime todo el formulario; Para "mejorarlo" un poco haz lo siguiente:

(1) Coloca los botones y el TEdit dentro de un panel y lo situas en la parte inferior del form.
(2) En el evento de print coloca lo siguiente:

Código Delphi [-]
  var
    bi:TBorderIcons;
  begin
  
    // Antes de imprimir
    Self.Color := clWhite;
Self.BorderStyle := bsNone;
    bi := Self.BorderIcons;
    Self.BorderIcons := [];
  
    // Ocultarlo antes de imprimir
    panel1.Visible := False;    <<-- Panel donde están los controles
    
    try
      // Imprimir
      Self.Print;
  
      // Despues de imprimir....
      Self.BorderIcons := bi;
      Self.BorderStyle := bsSizeable;
Self.Color := clBtnFace;
  
    finally
  panel1.Visible := False;
    end;
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 13-06-2005 a las 10:08:36.
Responder Con Cita
  #3  
Antiguo 14-06-2005
eljuan eljuan is offline
Registrado
 
Registrado: jun 2005
Posts: 3
Poder: 0
eljuan Va por buen camino
y para realizar el guardado de timages

hola Neftali te agradesco de verdad la ayuda proporcionada y la rapidez con que la brindan. mi problema de la impresion ha quedado resuelta, ahora mi otro problema es el guardado de este mismo programa.
espero y me puedas dar una sugerencia.
Responder Con Cita
  #4  
Antiguo 14-06-2005
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
Pon un componente TImage en el formulario y prueba con un código como éste:

Código Delphi [-]
 var
   DestRect, SourceRect: TRect;
 begin
   // Rectangulos origen y destino
   SourceRect := Rect(0, 0, Self.Width, Self.Height);
   DestRect := Rect(0, 0, Self.Width, Self.Height);
   // Copiar la imagen
   Image1.Canvas.CopyRect(DestRect, Self.Canvas, SourceRect);
   // Grabarla en disco
   Image1.Picture.Bitmap.SaveToFile('c:\temp\image1.bmp');

A partir de éste puedes modificarlo para mejorarlo, pero la base ya la tienes.
__________________
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
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


La franja horaria es GMT +2. Ahora son las 08:08:15.


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