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-2008
underwater underwater is offline
Miembro
 
Registrado: oct 2007
Ubicación: Argentina
Posts: 23
Poder: 0
underwater Va por buen camino
canvas y TEXTOUT

Hola a todos...

en mi afan de poder darle un poco mas de diseño a mis aplicaciones recurro a vosotros...je
Mi problema es el siguiente... Yo puse en un form un List View en el cual quise dibujar los items que alli cargo... Lo que quise hacer es una especie de tarjeta en la que se muestran datos como :

NOMBRE (Aparece centrado en la cabecera del item...)
"Direccion : "
"Telefono : "
"Email : "

Esos son los datos que queria mostrar en el List View. y bueno agarre el metodo "CustomDrawItem" del ListView. Ahi empece bien.. Pude a traves del CANVAS escribir cada uno de estos datos, y lo hice pude mostrar todo como una tarjeta los datos que yo queria mostrar. El codigo que utilice fue el siguiente :

Código Delphi [-]
var 
  MiRect: TRect; 
begin 
  with Sender as TListView do 
    begin 
      if(Assigned(Item))then 
                begin 
          case ViewStyle of 
            vsIcon: begin 
                         MiRect  :=  Item.DisplayRect(drIcon);                      
                         if(Item.SubItems.Count>0)then 
                           begin 
                             Canvas.Font.Color :=  clBlue; 
                                Canvas.TextOut(MiRect.Left+40,'Nombre');                                  Canvas.TextOut(MiRect.Left+10,                                              MiRect.Top+Canvas.TextHeight(Item.SubItems[3])+25,'Direccion'); 
                             Canvas.TextOut(MiRect.Left+10,                             MiRect.Top+Canvas.TextHeight( Item.SubItems[3])+45,'Telefono'); 
                           end; 

                         Canvas.Brush.Color  :=  clSkyBlue; 
                         Canvas.FrameRect(MiRect); 

                         Item.Caption  :=  ''; 
                         ilLargeImages.ImageType  :=  itImage; 
                         ilLargeImages.Draw(Canvas,MiRect.Left,MiRect.Top,1); 
                       end; 
                        vsSmallIcon:  begin 
                              end; 
            vsList: begin 
                      end; 
            vsReport: begin 
                            MiRect  :=  Item.DisplayRect(drSelectBounds); 
                            Canvas.Brush.Color  :=  $00FFFDF4; 
                            Canvas.FrameRect(MiRect); 
                          end; 
          end; 
               end; 
      end;


En el codigo se ve agregado cuando selecciono un item para que cambie de color, algo mas que pude agregar ...

Mi problema surgio cuando quise hacer que cambie de color una linea escrita a traves del metodo del canvas "Canvas.TextOut(MiRect.Left+40, MiRect.Top+5,'Dirección');"
Lo que quise hacer, basicamente, es lograr hacer que el "titulo" (en este caso lo que cargo como NOMBRE), aparezca en negrita y con un color, por ejemplo azul; y que los demas datos ("Direccion : ", "Telefono : ", "Email : ") aparezcan en NORMAL, y en Rojo. Lo que hice en el codigo fue algo asi :

Código Delphi [-]
    Canvas.Font.Color :=  clBlue;//Aca seteo un color de font 
       Canvas.Font.Style  := Canvas.Font.Style + [fsBold]; //Coloco negrita 
       Canvas.TextOut(MiRect.Left+40, MiRect.Top+5,'NOMBRE'); 
       Canvas.Font.Color :=  clRed;//Aca intento cambiar el color del font 
       Canvas.Font.Style  := Canvas.Font.Style - [fsBold];  //Quito negrita 
       Canvas.TextRect(MiRect2, MiRect2.Left+40,         MiRect2.Top+Canvas.TextHeight(Item.SubItems[1])+10,'Dirección');

Pero bueno, no se si el canvas del ListView no permite hacer estas pruebas de colores...por que no hubo forma de que me cambiara de color. Me ponia los dos TEXTOS, con el mismo color (el primero de ellos, azul).

Mi duda es la siguiente... es posible hacer esto?? o sea cambiar de color la fuente en un linea y cambiarla en otra... por que no pude hacer que ande...y me volvio loco... :S..je

bueno gracias de antemano..

Saludos a todos y buenn finde
Responder Con Cita
  #2  
Antiguo 28-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
No estoy seguro, pero probablemente funcione si primero defines el estilo y luego el color con SetTextColor(Canvas.Handle, clRed);

Saludos
Responder Con Cita
  #3  
Antiguo 31-03-2008
underwater underwater is offline
Miembro
 
Registrado: oct 2007
Ubicación: Argentina
Posts: 23
Poder: 0
underwater Va por buen camino
si funciona!!! ... esa funcion no la tenia.. habia ademas muchas mas que me ayudan!! Gracias por el empujon ...

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
ayuda con canvas maikelguille Varios 4 17-03-2008 15:33:23
Alternativa a TEXTOUT que soporte Unicode MDSato Gráficos 10 20-03-2007 13:36:59
Borrar canvas Joakin Gráficos 6 19-07-2006 20:06:39
Problem con Canvas deimonio Gráficos 3 31-12-2003 10:55:02
Canvas???? craven Gráficos 2 17-05-2003 13:26:02


La franja horaria es GMT +2. Ahora son las 07:51: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