急需打印treeview的例子程序!先谢了! 最好不是用的第三方控件。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不如就用一个TRichEdit控件,首先将TListView变成行,最好先算出每列的最大宽度,用这个宽度来保证每列一样宽,将每行数据转换成字符串,然后送入TRichEdit控件中,然后用TRichEdit的print方法将结果打印出来。 1、建一个临时表(或者用TClientDataSet建一个内存表),ListView中的列对应到字段,没问题吧?2、把数据拷贝到这个表内ListView中的Items对应到记录,没问题吧?3、打印表内数据Quick Report打印一个DataSet,没问题吧? http://search.csdn.net/Expert/topic/53/53330.xml?temp=4.636782E-02 把TTreeView输出成 HTML 文件,用IE打印,格式非常灵活,连图标都可以。 是treeview,不是listview,hehe.... 补充一下:打印的不仅仅是TREEVIEW的内容,还要能保留树型结构。 呵呵,利用TTreeView.SaveToFile把它保存到一个临时文件(文本)然后利用OLE调用NotePand,直接沉默打印。 >>是treeview,不是listview知道是TreeView , Html 里面做不出树型来么?打文本也可以:(*// 标题:可视树转换成连线文本说明:使用中文制表符构成连线;支持纵横粗细选择设计:Zswang日期:2002-03-12支持:[email protected]//*)///////Begin SourcetypeTThickness = -1..+1;constcGBGridList: array[TThickness, TThickness, TThickness, TThickness] of WideString =(((('┼', '├', '┽'), ('┴', '└', '┵'), ('╁', '┟', '╅')),(('┤', '│', '┥'), ('┘', '↑', '┙'), ('┧', '︾', '┪')),(('┾', '┝', '┿'), ('┶', '┕', '┷'), ('╆', '┢', '╈'))),((('┬', '┌', '┭'), ('─', '→', '《'), ('┰', '┎', '┱')),(('┐', '↓', '┑'), ('←', ' ', '<'), ('┒', '∨', '┓')),(('┮', '┍', '┯'), ('》', '>', '━'), ('┲', '┏', '┳'))),((('╀', '┞', '╃'), ('┸', '┖', '┹'), ('╂', '┠', '╉')),(('┦', '︽', '┩'), ('┚', '∧', '┛'), ('┨', '┃', '┫')),(('╄', '┡', '╇'), ('┺', '┗', '┻'), ('╊', '┣', '╋'))));function TreeViewToDisplay(mTreeView: TTreeView; mStrings: TStrings;mHBold: Boolean = True; mVBold: Boolean = True): Boolean;{ 将可视树转换成可视方式 }varI, J: Integer;T, S: string;H, V: Integer;vTreeNode: TTreeNode;beginResult := False;if not Assigned(mTreeView) then Exit;if not Assigned(mStrings) then Exit;mStrings.Clear;H := Iif(mHBold, +1, -1);V := Iif(mVBold, +1, -1);J := 0;with mTreeView do tryfor I := 0 to Pred(Items.Count) do beginif J > Items[I].Level thenT := Copy(T, 1, Length(T) - (J - Items[I].Level) * 2)else if J < Items[I].Level then T := T + S;vTreeNode := Items[I].GetNextSibling;if not Assigned(vTreeNode) then beginmStrings.Add(T + cGBGridList[V, H, 00, 00] + Items[I].Text);S := cGBGridList[00, 00, 00, 00];end else beginmStrings.Add(T + cGBGridList[V, H, V, 00] + Items[I].Text);S := cGBGridList[V, 00, V, 00];end;J := Items[I].Level;end;exceptExit;end;Result := True;end; { TreeViewToDisplay }///////End Source///////Begin Demoprocedure TForm1.Button1Click(Sender: TObject);beginTreeViewToDisplay(TreeView1, Memo1.Lines, CheckBox1.Checked, CheckBox2.Checked);end;///////End Demo 楼上的几位,别把dfw里的答复原样拷贝过来,成不成? 两个问题 如何进行文本合并? 诸位大侠,请问哪里的电脑方面的电子书比较多? messagebox的MB_OKCANCEL 问题! 简单问题! database Treeview的节点上下移动问题——非鼠标拖拽的方法的实现!? 一个关于事件共享的问题 sql server6.5数据恢复的问题????100分。 请问我在用Query时出现“Error Creating cursor handle”的错误,具体如下 流星 客户要求做一个表的统计功能,活一点的(其实很急,但习惯了)
列的最大宽度,用这个宽度来保证每列一样宽,将每行数据转换成字符串,
然后送入TRichEdit控件中,然后用TRichEdit的print方法将结果打印
出来。
ListView中的列对应到字段,没问题吧?2、把数据拷贝到这个表内
ListView中的Items对应到记录,没问题吧?3、打印表内数据
Quick Report打印一个DataSet,没问题吧?
hehe....
然后利用OLE调用NotePand,直接沉默打印。
标题:可视树转换成连线文本说明:使用中文制表符构成连线;支持纵横粗细选择设计:Zswang日期:2002-03-12支持:[email protected]//*)///////Begin SourcetypeTThickness = -1..+1;constcGBGridList: array[TThickness, TThickness, TThickness, TThickness] of WideString =(((('┼', '├', '┽'), ('┴', '└', '┵'), ('╁', '┟', '╅')),(('┤', '│', '┥'), ('┘', '↑', '┙'), ('┧', '︾', '┪')),(('┾', '┝', '┿'), ('┶', '┕', '┷'), ('╆', '┢', '╈'))),((('┬', '┌', '┭'), ('─', '→', '《'), ('┰', '┎', '┱')),(('┐', '↓', '┑'), ('←', ' ', '<'), ('┒', '∨', '┓')),(('┮', '┍', '┯'), ('》', '>', '━'), ('┲', '┏', '┳'))),((('╀', '┞', '╃'), ('┸', '┖', '┹'), ('╂', '┠', '╉')),(('┦', '︽', '┩'), ('┚', '∧', '┛'), ('┨', '┃', '┫')),(('╄', '┡', '╇'), ('┺', '┗', '┻'), ('╊', '┣', '╋'))));function TreeViewToDisplay(mTreeView: TTreeView; mStrings: TStrings;mHBold: Boolean = True; mVBold: Boolean = True): Boolean;{ 将可视树转换成可视方式 }varI, J: Integer;T, S: string;H, V: Integer;vTreeNode: TTreeNode;beginResult := False;if not Assigned(mTreeView) then Exit;if not Assigned(mStrings) then Exit;mStrings.Clear;H := Iif(mHBold, +1, -1);V := Iif(mVBold, +1, -1);J := 0;with mTreeView do tryfor I := 0 to Pred(Items.Count) do beginif J > Items[I].Level thenT := Copy(T, 1, Length(T) - (J - Items[I].Level) * 2)else if J < Items[I].Level then T := T + S;vTreeNode := Items[I].GetNextSibling;if not Assigned(vTreeNode) then beginmStrings.Add(T + cGBGridList[V, H, 00, 00] + Items[I].Text);S := cGBGridList[00, 00, 00, 00];end else beginmStrings.Add(T + cGBGridList[V, H, V, 00] + Items[I].Text);S := cGBGridList[V, 00, V, 00];end;J := Items[I].Level;end;exceptExit;end;Result := True;end; { TreeViewToDisplay }///////End Source///////Begin Demoprocedure TForm1.Button1Click(Sender: TObject);beginTreeViewToDisplay(TreeView1, Memo1.Lines, CheckBox1.Checked, CheckBox2.Checked);end;///////End Demo