DBCtrlGrid

procedure TForm1.FormShow(Sender: TObject);
begin
  ADOTable1.Open;
end;

procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
  Index: Integer);
var
  Status:string;
  Tname:string;
  TCap:string;
  textrect,CapRect,panelRect:TRect;
begin
  with DBCtrlGrid do
  begin
    //取数据
    with datasource.DataSet do
    begin
      Status := FieldByname('status').AsString;
      Tname  := FieldByname('name').AsString;
      TCap := FieldByname('capacity').AsString+'人';
    end;

    //确定重绘区域
    panelRect.TopLeft := Canvas.PenPos;
    panelRect.Bottom := PanelHeight ;
    panelRect.Right := PanelWidth ;
    Canvas.Font.Assign( Self.Font);

    if Status='A' then
    begin//空桌
      Canvas.Brush.Color := clInfoBk;//
      Canvas.Pen.Color := clBlack;
      //Canvas.Font.Color := $FF00FF;// 字体为反色
    end
    else
    if Status='B' then
    begin//预订
      Canvas.Brush.Color := clYellow;// $FFFF00;//黄 底色
      Canvas.Pen.Color := clBlack;
      //Canvas.Font.Color := not clYellow;// 字体为反色
    end
    else
    if Status='C' then
    begin//使用中
      Canvas.Brush.Color := Clred;// $FF0000;//红 底色
      Canvas.Pen.Color := clBlack;//not $FF0000;
      //Canvas.Font.Color := $FFFF00;// 字体为反色
    end;

    if PanelIndex=Index then
    begin
      Canvas.Brush.Color := $009CE2C5;// 淡绿色
      Canvas.Pen.Color := clBlack;//not $FF0000;
      //Canvas.Font.Color := $FFFF00;// 字体为反色
    end;
    //画格
    Canvas.Rectangle(panelRect);
    Canvas.Font.Color := clMaroon;
    //Canvas.Brush.Style := bsClear;
    Canvas.Font.Size:=12;
    Canvas.Font.Style:= Canvas.Font.Style + [fsBold];
    textrect.Left :=15;
    textrect.Top :=5;
    textrect.Right := textrect.Left + Canvas.TextWidth(Tname);
    textrect.Bottom := textrect.Top + Canvas.TextHeight(Tname);
    Canvas.TextRect(textrect,textrect.Left,textrect.Top,Tname);

    Canvas.Font.Color := clBlue;
    Canvas.Font.Size:=8;
    Canvas.Font.Style:= Canvas.Font.Style - [fsBold];
    CapRect.Left := 25;
    CapRect.Top := textrect.Bottom +3;
    CapRect.Right := CapRect.Left + Canvas.TextWidth(TCap);
    CapRect.Bottom := CapRect.Top + Canvas.TextHeight(TCap);
    Canvas.TextRect(CapRect,CapRect.Left,CapRect.Top,TCap);
  end;
end;

procedure TForm1.DBCtrlGrid1DblClick(Sender: TObject);
begin
  ShowMessage(ADOTable1.FieldByName('name').AsString);
end;

 

posted @ 2012-06-25 17:06  ftwsnow  阅读(1145)  评论(0编辑  收藏  举报