TStringGrid でカラム名の省略文字(...)を表示するには?

解決


Del  2008-01-29 11:19:12  No: 29561

TStringGrid でカラムの幅が変更されたときにカラム名が
表示しきれない場合はは、省略文字を'...'を表示させたいのですが
何か関数はあるのでしょうか?

とりあえず、自分で書いてみましたがいまいちです。
よろしくお願いします。

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  uFormat: UINT;
  ARect: TRect;
  AText, TmpText: string;
  WText: WideString;
  DotStr: string;
begin
  with Sender as TStringGrid do begin
    SetBKMode(Canvas.Handle, Windows.TRANSPARENT);
    Canvas.FillRect(Rect);
    Canvas.Pen.Width := 1;
    Canvas.Pen.Color := clSilver;
    //固定行の場合
    if ARow = 0 then begin
      ARect := Rect;
      WText := Cells[ACol, ARow];   //ワイド文字にセット
      TmpText := WText;
      DotStr := '';
      while Canvas.TextWidth(TmpText + DotStr) + 3 > (Rect.Right - Rect.Left) do begin
        //全て'.' にならないように1文字は残す
        if Length(WText) = 1 then
          Break;
        Delete(WText, Length(WText), 1);
        TmpText := WText;
        DotStr := DotStr + '.';
      end;
      AText := TmpText + DotStr;
      uFormat := DT_VCENTER or DT_SINGLELINE;
      DrawText(Canvas.Handle, PChar(AText), Length(AText), ARect, uFormat);
      Canvas.MoveTo(Rect.Right-1, Rect.Top+1);
      Canvas.LineTo(Rect.Right-1, Rect.Bottom-2);
      Exit;
    end;
  end;
end;


Del  2008-01-29 23:47:49  No: 29562

申し訳ございません。
二重で投稿しておりましたので
こちらは削除してくさだい。
とりあえず解決にチェックしておきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加