数据集处理成可视树,数据网格自动适应宽度
来源:互联网 发布:html 多选数据样式 编辑:程序博客网 时间:2024/05/29 10:11
(评分:★★ , 回复: 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数据网格自动适应宽度
- UILabel 自动适应宽度
- 自动适应屏幕宽度
- 使iframe高度和宽度适应浏览器可视区域大小
- IFRAME自动适应网页宽度
- android 自动适应宽度TextView
- 网页宽度自动适应手机屏幕宽度
- 一起学习 POI (使用 maven 构建)(4)-为单元格数据设置字体、修改工作簿内容、设置换行、自动适应宽度
- textarea文本域宽度和高度(width、height)自动适应变化处理
- textarea文本域宽度和高度(width、height)自动适应变化处理 .
- textarea文本域宽度和高度(width、height)自动适应变化处理
- textarea文本域宽度和高度(width、height)自动适应变化处理
- 让文字自动适应表格宽度(CSS)
- 图片自动适应宽度和高度
- 让文字自动适应Table宽度
- 让文字自动适应Table宽度
- 如何用idFTP遍历整个目录—下载、删除
- 在DBGrid中实现Copy、Paste功能
- 中间件
- 生活指南:计算机族必喝的健康饮料
- OOP在三层系统中的应用
- 数据集处理成可视树,数据网格自动适应宽度
- 中间件的产品种类
- 使用INDY的IdMappedPortTCP控件实现动态的HTTP代理服务器
- DELPHI的一些开发技巧和方法(一)
- DELPHI的一些开发技巧和方法(二)
- 用Delphi实现Socket5代理编程系列讲座
- 谈Delphi编程中Http协议的应用(一)
- 解析Ajax如何处理响应信息
- Delphi(一) --惯用法