TDBGridの右寄せ・センターリング @Delphi

新しいバージョンを買っているのに、移行せずに、
古いバージョンを使ってきたが、やっとXE2に着手。
最新は、10.2 Tokyo

XE5から、iOS/Androidの開発も出来るようになったので、
このバージョンまでは、保有しているが、
まだ、インストールすらしていない。

まだ、そこまで必要な案件がない・・・

***

TDBGridのカスタムドローで、センターリング・右寄せするには、
昔は、

with TDBGrid.canvas do begin
case Column.Alignment of
 taRightJustify:
  // 右寄せ
  LeftMargin := Column.Width - TextWidth(bufStr) - 4;
 taCenter:
  // 中央寄せ
  LeftMargin := (Column.Width - TextWidth(bufStr)) div 2;
 end;
 TextRect(Rect, Rect.Left + LeftMargin, Rect.Top + 2, bufStr);
end;

と、書いていたが、XE2にしてから、ずれるようになったので、
調べてみたところ、

今は、

with TDBGrid do begin
  case Column.Alignment of
    taRightJustify:
      // 右寄せ
      uFormat := DT_RIGHT or DT_SINGLELINE or DT_VCENTER;
    taCenter:
      // 中央寄せ
      uFormat := DT_CENTER or DT_SINGLELINE or DT_VCENTER;
    else
      uFormat := DT_LEFT or DT_SINGLELINE or DT_VCENTER;
  end;

  aRect      := Rect; // ※DrawTextは変数渡し(RectはConst)
  InflateRect(aRect, 0, 0);
  DrawText(Handle, PChar(bufstr), Length(bufstr), ARect, uFormat);
end;

と書くようだ。

参  >> TDBGrid の複数行選択とセルのカスタム描画 

 

また、XE2からスタイルテーマが選べるようになり、
黒塗りが出来るようになった。

しかし、上記カスタムドローをしちゃうと、背景が真っ白になったりするので、

Canvas.Font.Color :=TStyleManager.ActiveStyle.GetSystemColor(clWindowText)
// ※clWindowTextを、clbtnface、clWindowなどに、変更

を、追加することで、各テーマの標準色を取ってきてくれる。

 

客様の反応は、わからないけど、これで納品予定(笑

白バックって、三原色を放つため、光量が強すぎて、目には刺激が強すぎるが、
その点、黒バックって、目に優しいんですよね♪

昔のDOSの画面は、真っ黒に緑文字だったのに、
紙は白だけど、ディスプレイも白じゃないとって、誰が決めたんだろう?

PS.
最近見つけた、Windowsの新機能 >> 夜間モード

https://support.microsoft.com/ja-jp/help/4027563/windows-10-set-your-display-for-night-time

ブルーライトカットで、目が一瞬で楽になるのが、わかります。
お試しあれ!。

TDBGridの右寄せ・センターリング @Delphi
Tagged on: