数据集处理成可视树,数据网格自动适应宽度
2006-09-20 22:14
344 查看
作者 : jackgao |
标题 : 标题:数据集处理成可视树,数据网格自动适应宽度 |
关键字: 处理父节点标识字段、节点文本字段、节点标识字段这种表结构,数据网格自动适应宽度 |
分类 : 开发技巧 |
密级 : 参赛 |
(评分:★★ , 回复: 6, 阅读: 804) 说明:处理父节点标识字段、节点文本字段、节点标识字段这种表结构 支持:gzpwr@163.com ///////Begin Source function DataSetToTreeNode(mDataSet: TDataSet; mFieldNameParent: string; //父节点标识字段名 mFieldNameTreeText: string; //节点文本字段名 mFieldNameTreeId: string; //节点标识字段名 mTreeView: TTreeView; mTreeNode: TTreeNode; mParentText: string): Boolean; var vTreeNode: TTreeNode; vFieldValues: Variant; vFieldNames: string; begin Result := False; if not Assigned(mDataSet) then Exit; if not Assigned(mTreeView) then Exit; if not mDataSet.Active then Exit; vFieldNames := Format('%s;%s;%s', [mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]); mDataSet.Filtered := False; mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]); mDataSet.Filtered := True; if mDataSet.RecordCount = 0 then Exit; mDataSet.First; while not mDataSet.Eof do begin vTreeNode := mTreeView.Items.AddChild(mTreeNode, mDataSet.FieldByName(mFieldNameTreeText).AsString); vFieldValues := mDataSet[vFieldNames]; DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId, mTreeView, vTreeNode, mDataSet.FieldByName(mFieldNameTreeId).AsString); ///////Begin 恢复位置 mDataSet.Filtered := False; mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]); mDataSet.Filtered := True; mDataSet.Locate(vFieldNames, vFieldValues, []); ///////End 恢复位置 mDataSet.Next; end; Result := True; end; ///////End Source ///////Begin Demo procedure TForm1.Button1Click(Sender: Tobject); begin TreeView1.Items.Clear; DataSetToTreeNode(Table1, 'ParentTreeId', 'TreeText', 'TreeId', TreeView1, nil, 'NULL'); end; ///////End Source 数据网格自动适应宽度 说明:使用DBGrid不可不看 ///////Begin Source uses Math; function DBGridRecordSize(mColumn: Tcolumn): Boolean; { 返回记录数据网格列显示最大宽度是否成功 } begin Result := False; if not Assigned(mColumn.Field) then Exit; mColumn.Field.Tag := Max(mColumn.Field.Tag, TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText)); Result := True; end; { DBGridRecordSize } function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean; { 返回数据网格自动适应宽度是否成功 } var I: Integer; begin Result := False; if not Assigned(mDBGrid) then Exit; if not Assigned(mDBGrid.DataSource) then Exit; if not Assigned(mDBGrid.DataSource.DataSet) then Exit; if not mDBGrid.DataSource.DataSet.Active then Exit; for I := 0 to mDBGrid.Columns.Count - 1 do begin if not mDBGrid.Columns[I].Visible then Continue; if Assigned(mDBGrid.Columns[I].Field) then mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag, mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset else mDBGrid.Columns[I].Width := mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset; mDBGrid.Refresh; end; Result := True; end; { DBGridAutoSize } ///////End Source ///////Begin Demo procedure TForm1.DBGrid1DrawColumnCell(Sender: Tobject; const Rect: Trect; DataCol: Integer; Column: Tcolumn; State: TGridDrawState); begin DBGridRecordSize(Column); end; procedure TForm1.Button1Click(Sender: Tobject); begin DBGridAutoSize(DBGrid1); end; ///////End Demo 2003-5-14 9:35:00 |
相关文章推荐
- 数据集处理成可视树,数据网格自动适应宽度
- 【Delphi-ADO】Delphi数据网格自动适应宽度
- 数据网格自动适应宽度
- textarea文本域宽度和高度(width、height)自动适应变化处理
- textarea文本域宽度和高度(width、height)自动适应变化处理
- textarea文本域宽度和高度(width、height)自动适应变化处理 .
- easyui combobox 动态加载数据并回显选中 ,设置宽度和高度自动适应
- textarea宽度、高度自动适应处理方法
- textarea文本域宽度和高度(width、height)自动适应变化处理
- html 使表格随着内容自动适应宽度
- 自动适应输入内容宽度的TextBox控件
- 网页宽度自动适应手机屏幕宽度的方法 (转)
- HTML5+CSS3的响应式网页设计:自动适应屏幕宽度
- textarea文本域宽度和高度(width、height)自己主动适应变化处理
- div+css 常用三种自动适应宽度分栏
- iOS UILabel根据字符串长度自动适应宽度和高度
- 网页宽度自动适应手机屏幕宽度的方法
- 63.iOS AutoLayout自动布局中级开发教程(4)-label文字自动适应大小,宽度(新)
- 父div 自动适应子div 宽度,撑开浏览器的宽度。
- HTML5+CSS3的响应式网页设计:自动适应屏幕宽度