[Delphi:91140] 縦書きしたstringgridのフォントの大きさ変更

464 views
Skip to first unread message

佐々木 義照

unread,
Mar 1, 2009, 9:42:29 AM3/1/09
to Del...@ml.users.gr.jp
stringgridに縦書きをさせたくて、下記のコードをネットから拾いました。
快適に動いています。
 
更に希望ですが、特定の行のみフォントの大きさを変えたいのですが。
 
「GetObject」を理解できないほどのレベルですが。
 
簡単にできないでしょうか?
 

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;  Rect: TRect; State: TGridDrawState);
  procedure VerticalTextDraw(S: String);
    var
      LF: TLogFont;
      I: Integer;
    begin
      GetObject(StringGrid1.Canvas.Font.Handle,SizeOf(LF), @LF);
      LF.lfEscapement := -900;
      StringGrid1.Canvas.Font.Handle := CreateFontIndirect(LF);
      I := ((Rect.Right - Rect.Left) div 2 + StringGrid1.Canvas.TextWidth('W'));
      StringGrid1.Canvas.TextOut(Rect.Left + I, Rect.Top + 5, S);
    end;
begin
  StringGrid1.Canvas.FillRect(Rect);
  VerticalTextDraw(StringGrid1.Cells[ACol,ARow]);
end;
 

よろしく、お願いします。
 
佐々木義照。

太田寛

unread,
Mar 1, 2009, 6:53:22 PM3/1/09
to Del...@ml.users.gr.jp
今何行目かは、OnDrawCellイベントの引数ARowで判断します。
文字は、StringGrid1.Canvasに書き出すわけですから、
StringGrid1.CanvasのFontプロパティをセットすれば可能です。

if ARow=HogeRow then
StringGrid1.Canvas.Font.Size = Dai
else
StringGrid1.Canvas.Font.Size = Futu;


--
〒760-0080 香川県高松市木太町1730-17
太田寛
Address setod...@nifty.com


佐々木 義照

unread,
Mar 1, 2009, 11:13:59 PM3/1/09
to Del...@ml.users.gr.jp
太田寛様、ありがとうございました。

希望どうりできました。

Reply all
Reply to author
Forward
0 new messages