报表详细数据面板(鼠标悬浮触发)

报表详细数据面板(鼠标悬浮触发)

使用组件TdxDockSite,鼠标悬浮时弹出一个框,可在此显示所需详情信息。

编写组件事件OnShowContol,因为该组件特殊性,在其方法中调用DataEntity.FieldByName(‘TEACHER_ID’).AsString时,当结果为空时(不执行查询时触发事件),不会报错且持续执行。所以只好使用全局变量,并在报表改变聚焦的事件中赋值。

聚焦改变事件:

procedure TfrmCgClientQDQry.PgGrid1DBTableView1FocusedRecordChanged(
  Sender: TcxCustomGridTableView; APrevFocusedRecord,
  AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  inherited;
  if WpPanel.Visible then
    ShowDetailPanel;
//teacherID 需要定义为该类的全局变量
  teacherID :=DataEntity.FieldByName('TEACHER_ID').AsString;
end;

OnShowControl事件:

procedure TfrmCgClientQDQry.WpDockSiteShowControl(Sender: TdxDockSite;
  AControl: TdxCustomDockControl);
begin
  inherited;
  ShowDetailPanel;
end;

ShowDetailPanel方法:

procedure TfrmCgClientQDQry.ShowDetailPanel;
var
  i, ATop: Integer;
  AControl: TWinControl;
  AControlType: TPgFieldControlType;
  sSql:string;
begin
  inherited; 
  scBox.LockScrollBars;
  try 
    ReportEntity.Close;
    sSql := 'SELECT TEACHER_ID,TEACHER_NAME,ENTRY_TIME,IS_LEAVE,REMARK  FROM TB_CG_TEACHER WHERE TEACHER_ID = :TEACHER_ID';
    ReportEntity.CommandText :=sSql;
    ReportEntity.Params.ParamByName('TEACHER_ID').AsString := teacherID;
    ReportEntity.Open; 
    TPgLib.ClearFieldControl(scBox);
    ATop := 1;
    for i := 0 to dsSerch.DataSet.FieldCount - 1 do
    begin
      if not dsSerch.DataSet.Fields[i].IsNull then
      begin
        AControlType := TPgFieldControlType.PgAuto;
        if SameText(dsSerch.DataSet.Fields[i].FieldName, 'IS_LEAVE')    then
          AControlType := TPgFieldControlType.PgCheckBox;
        AControl         := TPgLib.CreateFieldControl(scBox, dsSerch, dsSerch.DataSet.Fields[i], AControlType);
        AControl.Top     := ATop;
        AControl.Left    := 80;
        AControl.Visible := True;
        ATop             := ATop + AControl.Height + 2;
        AControl.Width   := 120;
      end;
    end;
  finally
    scBox.UnlockScrollBars;
  end;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值