首页 > 其他分享 >TUniDBGrid控件之Summary例子

TUniDBGrid控件之Summary例子

时间:2024-01-29 22:12:47浏览次数:32  
标签:控件 begin end Column TUniDBGrid Summary TMainForm AuxValue

TUniDBGrid控件之Summary例子
(记录一下,方便以后备查)
在这个例子中,主要用到TUniDBGrid、TClientDataSet和TDataSource三个控件。
本文除去介绍使用TUniDBGrid控件之Summary外,TClientDataSet使用FieldDefs用于自定义的字段名表(即:不使用 data provider)参考:Delphi中ClientDataSet的用法小结
例子的步骤如下:

  1. 新建一个UniGUI App,在MainForm上放入这三个控件:TUniDBGrid、TClientDataSet和TDataSource。
  2. 使用FieldDefs用于自定义的字段名表

    修改第一个字段的属性

    依次修改另外两个字段的属性
  3. 以FieldDefs中的字段名表为结构建立数据集
  4. 增加 Fields

    建立后这模样:
  5. 设置显示属性
  6. 设置DataSource1的的dataset为ClientDataSet1。
  7. 设置UniDBGrid1的属性:DataSource为DataSource1;另外一个是:
  8. 增加列及修改列的属性
  9. 定义两个事件:
  10. Main.pas 的代码如下:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIRegClasses, uniGUIForm, Data.DB, Datasnap.DBClient,
  uniGUIBaseClasses, uniBasicGrid, uniDBGrid;

type
  TMainForm = class(TUniForm)
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    ClientDataSet1Item: TStringField;
    ClientDataSet1UnitPrice: TFloatField;
    ClientDataSet1Quantity: TIntegerField;
    UniDBGrid1: TUniDBGrid;
    procedure UniFormCreate(Sender: TObject);
    procedure UniDBGrid1ColumnSummary(Column: TUniDBGridColumn;
      GroupFieldValue: Variant);
    procedure UniDBGrid1ColumnSummaryResult(Column: TUniDBGridColumn;
      GroupFieldValue: Variant; Attribs: TUniCellAttribs; var Result: string);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

function MainForm: TMainForm;

implementation

{$R *.dfm}

uses
  uniGUIVars, MainModule, uniGUIApplication;

function MainForm: TMainForm;
begin
  Result := TMainForm(UniMainModule.GetFormInstance(TMainForm));
end;

procedure TMainForm.UniDBGrid1ColumnSummary(Column: TUniDBGridColumn;
  GroupFieldValue: Variant);
begin
  if SameText(Column.FieldName, 'quantity') then
  begin
    if Column.AuxValue = NULL then Column.AuxValue:=0;
    Column.AuxValue := Column.AuxValue + Column.Field.AsInteger;
  end
  else if SameText(Column.FieldName, 'unitprice') then
  begin
    if Column.AuxValue = NULL then Column.AuxValue:=0.0;
    Column.AuxValue := Column.AuxValue + (Column.Field.AsFloat * ClientDataSet1Quantity.AsInteger);
  end;
end;

procedure TMainForm.UniDBGrid1ColumnSummaryResult(Column: TUniDBGridColumn;
  GroupFieldValue: Variant; Attribs: TUniCellAttribs; var Result: string);
var
  I : Integer;
  F : Real;
begin
  if SameText(Column.FieldName, 'quantity') then
  begin
    I:=Column.AuxValue;
    Result:=Format('Total Units: %d', [I]);
    Attribs.Font.Style:=[fsBold];
    Attribs.Font.Color:=clGreen;
  end
  else if SameText(Column.FieldName, 'unitprice') then
  begin
    F:=Column.AuxValue;
    Result:='Total Cost: '+FmtSettings.CurrencyString + FormatCurr('0,0.00 ', F);
    Attribs.Font.Style:=[fsBold];
    Attribs.Font.Color:=clNavy;
  end;
  Column.AuxValue:=NULL;
end;

procedure TMainForm.UniFormCreate(Sender: TObject);
var
  I : Integer;
begin
  for I := 1 to 15 do
  begin
    with ClientDataSet1 do
    begin
      Append;
      FieldByName('Item').AsString:='AG-'+Format('%0.5d', [I]);
      FieldByName('UnitPrice').AsFloat:=Random(2000000)/100;
      if I=10 then FieldByName('UnitPrice').AsFloat:=0/100;

      FieldByName('Quantity').AsInteger:=Random(500);
    end;
  end;
end;

initialization
  RegisterAppFormClass(TMainForm);

end.

标签:控件,begin,end,Column,TUniDBGrid,Summary,TMainForm,AuxValue
From: https://www.cnblogs.com/qiao-fu/p/17995454

相关文章

  • 在Python的Tkinter库中,`ttk.Combobox`是一个组合框控件,它允许用户从下拉列表中选择一
    在Python的Tkinter库中,`ttk.Combobox`是一个组合框控件,它允许用户从下拉列表中选择一个选项,也可以让用户输入内容。以下是一些主要的参数和方法:1.**创建Combobox**¹²:  ```python  importtkinterastk  importtkinter.ttkasttk  root=tk.Tk()  ......
  • 界面控件DevExpress ASP.NET Data Grid组件 - 可快速处理各类型数据!(二)
    由DevExpress开发的快速且功能完整的ASP.NETWebForms的DataGrid组件,从全面的数据塑造和数据过滤选项到十多个集成数据编辑器,该套件提供了帮助用户构建极佳数据所需的一些,没有限制!在上文中(点击这里回顾>>),我们为大家介绍了DevExpressASP.NETWebForms数据网格组件的性能、过滤......
  • 2.WPF中控件类之间的继承关系
    在WPF中所有的控件都是继承DispatcherObject类,可以说在wpf中DispatcherObject是所有控件类的基类,而DispatcherObject却继承Object,而它所在的程序集是在WindowsBase.dll里。看一张图,wpf控件继承关系图 1.Shape类形状控件是WPF一大系列控件。WPF所有的形状控件都继承于Shape基......
  • MFC 旋转控件
    ▲Ctrl+D旋转控件一定要比关联的Textbox大1,但TextBox的不能为0,否则关联不上。旋转控件更改两个属性:这样,点击后就会关联到TextBox的值变化。......
  • MFC 滑块控件简单使用
    ▲关联值在滑块的父窗体Dlg中,BOOLCMFCApplication1Dlg::OnInitDialog()初始化:m_pos关联Textbox,m_sb关联水平滑块。//设置编辑区默认m_pos=50;UpdateData(FALSE);//设置滑块范围m_sb.SetScrollRange(0,100);//设置滑块位置m_......
  • MFC Tab 标签控件
    ▲提升类▲两个dlg类,把边框去掉,把样式改成Child主Dlg头文件三个成员变量:private: CTabSheetm_tabCtrl; MyDlg1dlg1; MyDlg2dlg2;BOOLCMy02_TabCtrlDlg::OnInitDialog()中: //给tab控件添加对话框 //对话框设置为子对话框,默认是单独对话框 m_tabCtrl.AddPa......
  • MFC TreeView 控件的基本认识
    ▲树控件OnInitDialog()里面的一些基础操作。BOOLCMFCApplication1Dlg::OnInitDialog(){CDialogEx::OnInitDialog();//将“关于...”菜单项添加到系统菜单中。//IDM_ABOUTBOX必须在系统命令范围内。ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTB......
  • Summary - ber 中周赛 Round 24
    倒数第一我最强,worthreflecting,故记之。T1一开始读错题了,浪费了不知道多久。然后后面实在不会了打了一个很丑的\(O(n\logn)\)。中途提示说学了双指针,但是认为那是T3用的,,,总之就没想到。但是为什么呀?固定好了右端点逐渐变大,左端点也变大,那么中间的最优决策点也逐渐变大。......
  • C# 控件属性详解
    一、窗体(Form)属性详解1.布局AutoScroll:bool型,指示控件内容大于其可见区域时是否显示滚动条,初始为false。(注:当内容超出可见区域才显示滚动条,而不是一直显示滚动条)AutoSize:bool型,指示控件尺寸是否与其内容自适应,初始为false。Location:Point型,定义控件左上角相对于其容器左上角......
  • MFC 简单的界面切换测试主窗体类似控件的方式嵌入其他窗体
    ▲类向导->MFC类创建两个子窗体。1。创建两个子窗体。2。属性设置:1)、“Style”选择“Child”;中文版“样式”选择“下层”。2)、“Border”为“None”;中文版“边框”选择“无”。3。主窗体中实例子窗体对象:声明:private:CSubForm1*m_CSubForm1;CSubForm2*m_CSu......