をしてください、私はキャンバスの使用を支援する必要があります。 ユーザーはDBGridのタイトル列の上にマウスを移動すると、 タイトルの説明は、Delphi XE 3 で、この問題を消えます詳細については、のDBGridでCanvas.TextOutを使用する - デルファイXE 3
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Graphics, Controls, Forms, Dialogs, Data.DB, Datasnap.DBClient,
Grids, DBGrids, Types, StdCtrls;
type
TAccessDBGrid = class(TCustomGrid);
type
TForm1 = class(TForm)
DataSource1: TDataSource;
grid1: TDBGrid;
cdsTabela: TClientDataSet;
cdsTabelacodigo_1: TIntegerField;
cdsTabelacodigo_2: TIntegerField;`enter code here`
procedure grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure grid1TitleClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
cdsTabela.CreateDataSet;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
grid1.Refresh;
end;
procedure TForm1.grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
S1 : string;
begin
with TAccessDBGrid(grid1) do
begin
RowHeights[0] := 29;
Canvas.Brush.Color := clBtnFace;
case Column.Index of
0:
begin
Column.Title.Caption := '';
S1 := 'Code';
end;
1:
begin
Column.Title.Caption := '';
S1 := 'Description';
end;
end;
TDBGrid(Sender).Canvas.Font.Color:= clBlack;
Canvas.TextOut(Rect.Left + 3, 19, S1);
end;
end;
procedure TForm1.grid1TitleClick(Column: TColumn);
begin
ShowMessage('Title Click! ');
end;
end
私が投稿している答えを参照してください。
デルファイ7の回の出現しないことは、以下のコードに従ってください。
はどのように行の高さを変更すること期待していますか?私はこのマシンでD7を利用することはできませんが、そこではD7も使えるとは思いません。代わりに、FormCreateイベントの行の高さを設定します。そしてなぜ 'Rect.Top'からのオフセットを使うのではなく' Canvas.TextOut'の呼び出しで '19'をハードコーディングしていますか? '19'を使う代わりにあなたがそうするように変更するとどうなりますか?あなたのコードは意味をなさない。 1行ごとにTitle.Captionを削除し、すべての行のすべてのセルのS1から同じテキストを描画します。このコードは決して働きませんでした。 –
@KenWhite:「このコードは決して働かない」と言うのは間違いありません。確かに私のD7では正しく動作しません。 – MartynA