StringGridの使用方法(2)

 

AS/400のデータを表示
セルを右・左・中央に寄せる
1行おきにセルの色を変える
セルの幅を文字列に合わせる

セルを右・左・中央に寄せる

1/2
1/2
セルを右・左・中央に寄せる方法をご説明します。

StringGridのOnDrawCellイベントで行います。
設定方法はSetTextAlignという命令で文字の描画方法、xposで書き始めの位置を指定してExtTextOutという命令で実際の描画を行います。

このコーディング例では、固定セルは全て中央寄せ、それ以外の項目で1列目5列目は中央寄せ、6列目は右寄せ、それ以外は全て左寄せにします。


procedure TfrmShain.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  xpos: Integer;
begin
//セル寄せ
  if gdFixed in State then
  begin
    SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER or TA_TOP);
    xpos := (Rect.Left + Rect.Right) div 2;
  end
  else
  begin
    case ACol of
      1,5: //中央寄せ
      begin
        SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER or TA_TOP);
        xpos := (Rect.Left + Rect.Right) div 2;
      end;
      6: //右寄せ
      begin
        SetTextAlign(StringGrid1.Canvas.Handle, TA_RIGHT or TA_TOP);
        xpos := Rect.Right -2;
      end;
      else //左寄せ
        SetTextAlign(StringGrid1.Canvas.Handle, TA_LEFT or TA_TOP);
        xpos := Rect.Left + 2;
    end;
  end;
  ExtTextOut(StringGrid1.Canvas.Handle, xpos, Rect.Top + 2,
  ETO_CLIPPED or ETO_OPAQUE, @Rect,
PChar(StringGrid1.Cells[ACol, ARow]), Length(StringGrid1.Cells[ACol, ARow]), nil); end;


1/2