Ver Mensaje Individual
  #22  
Antiguo 28-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Reputación: 16
compuin Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Te muestro como usar dos fuentes en un texto alineado a la derecha:


Código Delphi [-]
procedure PrintText(Canvas: TCanvas; Text: String; Rect: TRect);
var
  OldAlign: cardinal;
  FName: String;
begin
  InflateRect(Rect, -1, -1);
  Canvas.FillRect(Rect);
  OldAlign:= SetTextAlign(Canvas.Handle, TA_UPDATECP or TA_RIGHT);
  MoveToEx(Canvas.Handle, Rect.Right, Rect.Top, nil);
  FName:= Canvas.Font.Name;
  Canvas.Brush.Style:= bsClear;
  TextOut(Canvas.Handle, 0, 0, PCHAR(Copy(Text, 2, Length(Text)-1)), Length(Text)-1);
  Canvas.Font.Name:= 'Symbol';
  TextOut(Canvas.Handle, 0, 0, PCHAR(Copy(Text, 1, 1)), 1);
  SetTextAlign(Canvas.Handle, OldAlign);
  Canvas.Font.Name:= FName;
end;



En este caso usa una fuente "Symbol" para el primer carácter del texto y la predeterminada para el resto.


Saludos.
Estoy intentando asi, pero no me logra posicionar en la segunda columna que es donde lo necesito

Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Alin: integer;
  FName: String;
  OldAlign: cardinal;
begin
  with Sender as TStringGrid do
  begin
    if ARow = 0 then
       Alin:= DT_CENTER
    else
       Alin:= DT_RIGHT;

    if ACol = 0 then
       Alin:= DT_LEFT;

     if ARow = 0 then
       Alin:= DT_CENTER;

    // Dibujar texto centrado horizontal y verticalmente o a la derecha
    InflateRect(Rect, -1, -1);
    Canvas.FillRect(Rect);
    FName:= Canvas.Font.Name;
    InflateRect(Rect, -3, -3);
    FName:= Canvas.Font.Name;
    Canvas.Brush.Style:= bsClear;
    //TextOut(Canvas.Handle, 0, 0, PCHAR(Copy(Text, 2, Length(Text)-1)), Length(Text)-1);
    Canvas.Font.Name:= 'Symbol';
    //TextOut(Canvas.Handle, 0, 0, PCHAR(Copy(Text, 1, 1)), 1);
    SetTextAlign(Canvas.Handle, OldAlign);
    Canvas.Font.Name:= FName ;
    DrawText(Canvas.Handle, PAnsiChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect,
      Alin or DT_VCENTER or DT_SINGLELINE);
  end;
Responder Con Cita