Delphi Tips 
-----------------------------

0211  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/08/21 おばQ rev 1.7
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/08/31 花井@自宅 編集
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;


参照: [Delphi-ML:41923] [Delphi-ML:41966] <Win95> <コンポーネント >

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp