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;