Ver Mensaje Individual
  #5  
Antiguo 30-06-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Reputación: 21
senpiterno Va por buen camino
Desde el eveto onpaint llamo a la funcion que crea el texto vertical de esta forma:

Código Delphi [-]
procedure TFEntradaSistema.GradianPaint(Sender: TObject);
begin
   
    //Crea un gradian sobre el objeto PaintBox
    CreaGradian(FEntradaSistema.Gradian);
    
     //Donde gradian es el objeto PaintBox
    CreaTextoVertical(FEntradaSistema.Gradian,'Entrada');
end;

 
Function CreaTextoVertical(Objeto:TPaintBox;Texto:String):Boolean;
Var
  LOGFONT : TLogFont;
  Font    : HFONT;
Begin
  
Try //Iniciamos el codigo de control de errores
 
   Result:=False;//Asignamos el valor por defecto de la funcion
   
   Objeto.Canvas.Brush.Color := $00C0FFFF;
   LOGFONT.lfHeight := 15;
   LOGFONT.lfWidth  := 0;
   LOGFONT.lfWeight := FW_NORMAL;
   LOGFONT.lfEscapement := 900; { angulo expresado en decimas de grado }
   LOGFONT.lfStrikeOut  := 0; { distinto de cero para activarlo }
   LOGFONT.lfItalic     := 0; { distinto de cero para activarlo }
   LOGFONT.lfUnderline  := 0; { distinto de cero para activarlo }
   LOGFONT.lfFaceName := 'Tahoma';
   Font := CreateFontIndirect(LOGFONT);
   SelectObject(Objeto.Canvas.Handle,Font);
   Objeto.Canvas.TextOut(3,Objeto.Height - 10,'Entrada');
   
   Result:=True;//Le damos el valor de salida a la funcion
 
Except //Se ha producido un error
   On E:Exception Do
      If (MensajesDeError(ErroresSistema(E), E, MsgErrorCreaTextoVertical,False)<> Reintentar) Then Begin
          Result:=False; //enviamos la respuesta de error
      End;//If
   End;//on
End;//Function

Respecto al crear un rectangulo donde dibujar el texto no me sirve, ya que el efecto que pretendo dar con el texto vertical es crear primero un gradian sobre el objeto (PaintBox) y despues crear el texto en forma vertical, estilo barra de inicio de win. Por esto que la creacion de un rectangulo haria que el efecto que pretendo lograr no se viera bien.
Y les vuelvo a repetir cuando se genera el efecto onpaint en efecto del texto desaparece mostrandome el texto en forma horizontal y no vertical.
quizas puedo estar realizando algo mal...ademas para completar tambien les muestro el codigo utilizado para gererar el gradian:

Código Delphi [-]
 
Function CreaGradian(Objeto:TPaintBox):Boolean;
Var
     Row, Ht: Word ;
Begin
    Try //Iniciamos el codigo de control de errores
       
       Result:=False;//Asignamos el valor por defecto de la funcion
       
       Ht := (Objeto.ClientHeight + 255) div 256 ;
       For Row := 0 to 255 do Begin
           With Objeto.Canvas do begin
               Brush.Color := RGB(0, 0, Row+20) ;
               FillRect(Rect(0, Row * Ht, Objeto.ClientWidth, (Row + 1) * Ht));
           End;
       End;
       
       Objeto.Canvas.Refresh;
       
        Result:=True;//Le damos el valor de salida a la funcion
    
Except //Se ha producido un error
   On E:Exception Do
      If (MensajesDeError(ErroresSistema(E), E, MsgErrorCreaGradina,False)<> Reintentar) Then Begin
          Result:=False; //enviamos la respuesta de error
      End;//If
   End;//on
End;//Function
Responder Con Cita