首页 > 编程 > C++ > 正文

C++ Builder中DBGrid控件连接ClientDataSet增加点标头进行排序

2019-11-08 03:16:24
字体:
来源:转载
供稿:网友

C++Builder中的DBGrid没有点标头进行排序的功能,参考网上及帮助文档,写了个DBGrid与ClientDataSet连接的排序代码。

C++Builder开发人员太少,资料太少,分享给大家参考下。

// ---------------------------------------------------------------------------void TForm1::DBTitleSort(TColumn *SortColumn) {    try {        UnicodeString OldIndex;        TDBGrid * dbgTemp = (TDBGrid*)SortColumn->Grid;        if ((SortColumn->Grid->DataSource == NULL) || (SortColumn->Grid->DataSource->DataSet == NULL) ||            !(SortColumn->Grid->DataSource->DataSet->Active) || (SortColumn->Grid->DataSource->DataSet->IsEmpty())) {            return;        }        TClientDataSet *cdsCur = (TClientDataSet*)SortColumn->Field->DataSet;        UnicodeString strSortColumnFileName = SortColumn->Field->FieldName;        OldIndex = cdsCur->IndexName;        if (OldIndex != "") {            cdsCur->IndexName = "";            cdsCur->DeleteIndex(OldIndex);        }        for (int i = 0; i < dbgTemp->Columns->Count; i++) {        //清除DBGrid标题显示            TColumn *temColumn = dbgTemp->Columns->Items[i];            temColumn->Title->Caption = temColumn->FieldName;            temColumn->Title->Font->Style = TFontStyles();//还原            temColumn->Title->Font->Color = clWindowText;//变黑        }        if (SortColumn->FieldName != OldIndex) {        //点击排序跟原来已经点击不一样            SortColumn->Grid->Tag = 0;        }        if (SortColumn->Grid->Tag == 0) {        //默认使用降序排列            TIndexOptions opts;            opts << ixDescending;            cdsCur->AddIndex(strSortColumnFileName,strSortColumnFileName, opts); // 降序            SortColumn->Grid->Tag = 1;            SortColumn->Title->Caption = "▼ " + SortColumn->FieldName;            SortColumn->Title->Font->Style = TFontStyles() << fsBold;//加粗            SortColumn->Title->Font->Color = clRed;//变红        }        else { // 否则按升序排列            TIndexOptions opts;            opts << ixPRimary;            cdsCur->AddIndex(strSortColumnFileName,strSortColumnFileName, opts); // 升序            SortColumn->Grid->Tag = 0;            SortColumn->Title->Caption = "▲ " + SortColumn->FieldName;            SortColumn->Title->Font->Style = TFontStyles() << fsBold;//加粗            SortColumn->Title->Font->Color = clRed;//变红        }        cdsCur->IndexName = strSortColumnFileName;    }    catch (...) {    //有异常,捕获但不进行处理    }}// ---------------------------------------------------------------------------
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选