TRichEdit.Paragraph.Tab[] の設定(Tab位置の設定)
|
<書式>
RichEdit1.Paragraph.Tab[iIndex] := ptsAbsolute
<値>
iIndex: Byte
タブインデックス。段落の何番目のタブ位置を設定するかを示す。
範囲は 0 から MAX_TAB_STOPS - 1 まで。
(定数 MAX_TAB_STOPS は RichEdit.pasで定義)
ptsAbsolute: LongInt
タブ位置。コントロール水平端からの絶対位置で単位は論理ポイント。
(1論理ポイントは 1/72論理インチ)
<解説>
・現在選択範囲のパラグラフのタブ位置設定を行います。範囲選択がされて
いないときは、キャレット(文字カーソル)のあるパラグラフになります。
・ptsAbsoluteにスクリーンのピクセル値を元にした値を設定
したい場合には、次のように変換します。
(論理ポイント) =
72 * ( ピクセル値 / 水平方向1論理インチ当りのピクセル数 )
<備考>
・Delphi のバージョンによっては、バグのために Tab[] プロパティの設定
が行われないパターンが発生します。詳細は[Delphi-ML:41966] をご覧下さい。
(Delphi 4.0 Update 3 には存在しています。)
<サンプル>
テキスト選択範囲内にあるパラグラフの最初のタブ位置をコントロール
中央に設定します
// 四捨五入します
function RoundOff(X: Extended): LongInt;
begin
if X >= 0 then
Result := Trunc(0.5 + X)
else
Result := Trunc(-0.5 + X);
end;
// テキスト選択範囲内にあるパラグラフの最初のタブ位置を
// コントロール中央に設定します
procedure TForm1.RichEdit1SetFirstTabAtCenter;
var
DC: HDC;
PixelsPerInch: Integer;
CenterByPixels: Currency;
CenterByPoints: Currency;
begin
// 水平方向1論理インチ当りのピクセル数を取得します。
DC := GetDC(0);
PixelsPerInch := GetDeviceCaps(DC, LOGPIXELSX);
ReleaseDC(0, DC);
// RichEdit1 の中央を得ます(ピクセル値)
CenterByPixels := RichEdit1.ClientWidth / 2;
// スクリーンのピクセル値から論理ポイント値に変換します
CenterByPoints := 72 * (CenterByPixels / PixelsPerInch);
// タブ位置を設定します。
RichEdit1.Paragraph.Tab[1] := 0; // バグ回避のため
RichEdit1.Paragraph.Tab[0] := RoundOff(CenterByPoints);
end;
// RichEdit1SetFirstTabAtCenter を呼び出します。
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1SetFirstTabAtCenter;
end;
|
|