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
CreaGradian(FEntradaSistema.Gradian);
CreaTextoVertical(FEntradaSistema.Gradian,'Entrada');
end;
Function CreaTextoVertical(Objeto:TPaintBox;Texto:String):Boolean;
Var
LOGFONT : TLogFont;
Font : HFONT;
Begin
Try
Result:=False;
Objeto.Canvas.Brush.Color := $00C0FFFF;
LOGFONT.lfHeight := 15;
LOGFONT.lfWidth := 0;
LOGFONT.lfWeight := FW_NORMAL;
LOGFONT.lfEscapement := 900;
LOGFONT.lfStrikeOut := 0;
LOGFONT.lfItalic := 0;
LOGFONT.lfUnderline := 0;
LOGFONT.lfFaceName := 'Tahoma';
Font := CreateFontIndirect(LOGFONT);
SelectObject(Objeto.Canvas.Handle,Font);
Objeto.Canvas.TextOut(3,Objeto.Height - 10,'Entrada');
Result:=True;
Except On E:Exception Do
If (MensajesDeError(ErroresSistema(E), E, MsgErrorCreaTextoVertical,False)<> Reintentar) Then Begin
Result:=False; End; End;End;
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
Result:=False;
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;
Except On E:Exception Do
If (MensajesDeError(ErroresSistema(E), E, MsgErrorCreaGradina,False)<> Reintentar) Then Begin
Result:=False; End; End;End;