Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2006
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
Duda sobre la función MoveTo y LineTo

Hola a todos,

Estoy intentando imprimir una línea de tipo subrayado que vaya desde donde termina el texto hasta un punto determinado. (Ejemplo: "Texto___________")

Para ello, primero muevo el Pen a la posición donde debe empezar a imprimirse la línea mediante la función MoveTo. Como la línea debe empezar a imprimirse al final del texto, había pensado en utilizar la función Printer.Canvas.TextWidth( "Texto") para obtener este punto, pero no lo está haciendo bien.
Código Delphi [-]
Printer.Canvas.MoveTo( Printer.Canvas.TextWidth( ATitulo ) , Y );
Printer.Canvas.LineTo( X, Y );

¿Hay alguna diferencia entre la métrica que utiliza la función MoveTo y TextWidth?
¿Cómo puedo solucionarlo?

Muchísimas gracias por vuestra ayuda.
Responder Con Cita
  #2  
Antiguo 26-01-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
El texto se empieza a dibujar sobre el margen izquierdo???.. Sino vas a tener que sumar tambien la posición del texo
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 26-01-2006
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
Sí, sí, el texto empieza sobre el margen izquierdo (ojala fuera eso).

Yo creo, aunque hablo desde la ignorancia absoluta, que tal vez estas funciones trabajen con alguna unidad métrica (mm o pulgadas) y la función TextWidth trabaja con píxels, o viceversa, pero me gustaría que alguien me lo confirmase y me pudiese indicar como solventarlo.

Gracias por tu colaboración
Responder Con Cita
  #4  
Antiguo 26-01-2006
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
¡¡¡¡ Solucionado !!!!

No se trataba de un problema de unidades métricas ni nada que se le parezca. El problema era mío, tenía un error en el cálculo de las coordenadas.

Perdón por las molestias y muchas gracias a todos por vuestra colaboración.
Responder Con Cita
  #5  
Antiguo 26-01-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,

Me alegra saber que lo has solucionado. Yo he echado un vistazo a la ayuda de la función "TextWidth" y esta devuelve su resultado en píxeles. El caso es que creo que lo que he conseguido es más o menos lo que precisabas. Como ya lo hize lo copio aquí, aunque ya solucionaras el asunto, por si puede servirte de algo o puede servir de algo a alguien.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  anchoTexto: integer;
const
  posicionY  = 10;
  posicionX  = 10;
  anchoLinea = 200;
  cadena     = 'Una cadena cualquiera';
begin
  anchoTexto := Canvas.TextWidth(cadena);
  Canvas.TextOut(posicionX, posicionY, cadena);
  Canvas.MoveTo(anchoTexto + posicionX, posicionY * 2);
  Canvas.LineTo(anchoLinea, posicionY * 2);
end;
__________________
David Esperalta
www.decsoftutils.com
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
Duda sobre la funcion StretchDIBits Javi2 Impresión 0 28-11-2005 12:38:30
Duda sobre creación de clase (Free y Destroy) adlfv OOP 3 09-10-2005 06:11:16
sobre la funcion winexec quake2420 Varios 2 13-06-2005 13:13:43
Sobre cierto resultado de la función SHGetSpecialFolderPath dec API de Windows 3 01-06-2005 06:59:01
Duda sobre sistema ulti-usuario y mono-usuario simon Varios 1 07-06-2004 18:35:44


La franja horaria es GMT +2. Ahora son las 13:41:20.


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