2017-05-31 14 views
1

問題を描くのDBGrid特定のデータセルに「完了」します。それは動作しますが、画像で覆われていないセルの部分には常に黒色があります。私はbmpイメージのピクセルサイズをセルのサイズに合わせて拡大しようとしましたが、いつもイメージをサイズ変更するようです。 Delphi 10.2を使用して、D7に問題はありませんでしたか?デルファイは、DBGridの中のデータセルに上のグリフを描画するTImageのリストから画像を使用して細胞画像黒の背景に

procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
    DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
    with Column do begin 
    if ((FieldName = 'Done') and (Field.AsString = 'x')) then begin 
    //below shows black outside of check mark image in the cell 
     ImageList1.Draw(DBGrid1.Canvas,Rect.Left,Rect.Top,0) 
    end 
    else DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 
    end; 
end; 

答えて

2

は常にDefaultDrawColumnCellを描くデフォルトのセルの操作を行います。

は、ここに1つのコードの試みの簡単な例があるなど、背景色、ペンとブラシの色を、設定の多くのコンボを試してみました。それは細胞が他の細胞のように見えるようにします。次に、イメージを描画します。これを試してみてください:

procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
    DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
    with Column do 
    begin 
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
    if ((FieldName = 'Done') and (Field.AsString = 'x')) then 
     ImageList1.Draw(DBGrid1.Canvas, Rect.Left, Rect.Top, 0); 
    end; 
end; 

私は、セルの背景を塗りつぶすコードがないので、説明したことが起こったと思います。

関連する問題