打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DBGrid中顯示多行的方法

DBGrid中顯示多行的方法

【作者】TATSU
【內文】來源:http://delphi.ktop.com.tw/topic.asp?topic_id=45682

Q:
當DBGrid的資料內容長度超過欄寬時,自动换行。象EXCEL中的格式设置中选定自动换行的功能那样。看到过这种方法的实现,但不知道怎么作出来的?


A:

procedure TForm1.FormShow(Sender: TObject);
var
  DBGridOptions : TDBGridOptions;
begin

  DBGrid1.DefaultDrawing := False ;

  //這一段程式碼中,主要設定了
  //1) default row height
  TStringGrid(DBGrid1).DefaultRowHeight := 70 ;

  //2) 還原 heading 的 row height
  TStringGrid(DBGrid1).RowHeights[0] := 20 ;

  //3) 如果讓用戶可以自行更改 column 的闊度,整個 grid
  //的 row height 都會還原,所以都用程式碼 disable 。
  DBGridOptions := DBGrid1.Options ;
  Exclude(DBGridOptions,dgColumnResize) ;
  DBGrid1.Options := DBGridOptions ;

end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  drawRect : TRect ;
  StrValue : String ;
  backColor, fontColor : TColor ;
begin
  if  gdSelected in State then
  begin
    backColor := clNavy ;
    fontColor := clWhite ;
  end
  else
  begin
    backColor := clWhite ;
    fontColor := clBlack ;
  end;

  DBGrid1.Canvas.Brush.Color := backColor ;
  DBGrid1.Canvas.FillRect(Rect);

  DBGrid1.Canvas.Font.Color := fontColor ;

  //預先縮小秀字的框架範圍,秀字時讓字與框架留有空間
  drawRect := Rect ;
  InflateRect(DrawRect, -4, -2) ;

  case DataCol of
  0 : strValue := DataSource1.DataSet.fieldByName('PRODUCT_ID').AsString ;
  1 : strValue := DataSource1.DataSet.fieldByName('PRODUCT_DESC').AsString ;
  end;

  DrawText(DBGrid1.Canvas.Handle,
           PChar(strValue),
           Length(strValue),
           DrawRect,
           DT_WORDBREAK) ;

end;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
CheckBox внутри DBGrid
android 美化zxing二维码扫描框
转载DBGrid和DBGridEH
delphi中TDBGrid的使用
Android DrawRect坐标
Android Canvas drawText实现中文垂直居中
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服