to Kingron(WinAPI): 等待你的答复!!1
解决方案 »
- 如何将一条比较粗糙的曲线转换成一条比较光滑的曲线?
- fastreport图片的打印
- 客户提供的一个OCX 控件,但不能在线程中调用,这怎么办?
- 在 form.create() 中 建立的控件,在form退出时会释放么?/
- C/S结构,文件如何上传且保存在Server上??
- 如何把多种格式的图片存入取出数据库BLOB字段啊?
- 我学过vc++,现在转学delphi,看什么书好,荐者有分
- 请问为什么在sql7中创建新的数据库后找不到该数据库的文件??
- 请教各位大虾,我想编一个物业管理软件,该怎么做系统分析???
- 关于遍历读取硬盘文件的问题
- 不规则按钮如何实现:如圆形(简便方法?)
- Delphi初学者问题之三
你知道TreeView控件有个强大的功能,那就是把分类树,写到一个文本文件中去,还可以
Load进来,说到这你明白了吗 hehe^^ ,好好看看TreeView生成的文本文件,你就可以
看到是什么结构了,它里面的分层是用Tab(#9)键实现的,所以你的明白了吧……
什么没有??!! 好吧好吧,帮人帮到底,加分哦 hehe^^
你的库要改一下,加一个级别字段和一个节点的序号,来说明层的级别和在树中的位置,然后
把数据库中的记录按节点的序号顺序取出,取一条,判断它是第几层,就在这个节点名子前加
几个Tab(#9),形成字符串,写到一个文本文件中,完了用一条TreeView.LoadFromFile('
生成了文件名');你就看到了, hehe^^
下面再说明一下节点的序号怎么用:
分类名 节点序号
A-- 1
|
-B-| 2
| |
| B1 3
-C 4
看明白节点序号怎么用了吗
对了,还有,加图片的号ICO,要在TreeView的OnGetImageIndex和OnGetSelectedIndex两个
事件中处理,先加上ImageList加好ICO,在TreeView的ImageList属性中加上ImageList控件
源码如下:
显示分类树部分:
第一步:生成树结构文件
var
TempTreeFile:TextFile; //用于存放数据的临时文件
I:integer; //当前节点的级别
S:String;
begin
AssignFile(TempTreeFile,'TempTree.txt');
Rewrite(TempTreeFile);
TreeQuery.Open;
TreeQuery.First;
try
try
with TreeQuery do
while not eof do
begin
S:='';
I:=1;
while i<TreeQueryJdjb.AsInteger do //TreeQueryJdjb.AsInteger是当前节点的级别
begin
S:=S+#9; //根据节点的级别而产生几个字符#9
inc(i);
end;
S:=S+TreeQueryJdmc.AsString; //TreeQueryJdmc.AsString为当前节点所显示的的文本
WriteLn(TempTreeFile,S); //将生成的字符串写到文本文件中
Next;
end;
finally
CloseFile(TempTreeFile);
end;
finally
TreeQuery.Close;
end;
end;
第二步:利用TTreeView组件的LoadFromFile方法将树结构从文件"TempTree.txt"装入即可
TreeView1.LoadFromFile('TempTree.Txt');一般在主窗体的Create中调用。TreeView加ICO部分:
procedure TMain.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if Node.HasChildren then
if Node.Expanded then
Node.ImageIndex := 1
else
Node.ImageIndex := 0
else
if Node.Selected then
Node.ImageIndex := 1
else
Node.ImageIndex := 0;
end;procedure TMain.TreeView1GetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
Node.SelectedIndex := Node.ImageIndex;
end;
加分!!!加分!!!!!!!!!!!!
to CDSoftwareWj(95927): 你说采用Txt文件是好,但是我需要的是TreeView中的每一项还和另外一个数据库有联系,就是当我点击TreeView中任意一项时能够读取放在node.data中的数据Subkey,然后根据该subkey从另外的库中筛选出属于该节点的数据记录,然后显示在ListView控件中,如你所说的,就不能够做到了!
to CDSoftwareWj(95927): 你说采用Txt文件是好,但是我需要的是TreeView中的每一项还和另外一个数据库有联系,就是当我点击TreeView中任意一项时能够读取放在node.data中的数据Subkey,然后根据该subkey从另外的库中筛选出属于该节点的数据记录,然后显示在ListView控件中,如你所说的,就不能够做到了!
我们公司里也在开发这样的程序(模块),要是向你说的那样就不能一句俩句的说明白的了
光是在设计初期我们三个就从数据库结构,程序流程等各各方面考虑,不过这个阶段以过去了
我们在开发时没有用到什么指针啦,什么node.data什么的,就是用了这种方法,程序是不能
给你,不过可以提醒你,好好看看节点的序号 hehe^^ 我们的设计是:
分类树库 主库
节点序号 节点序号其中核心部分是:
node:=当前节点 (TreeView.Selected)
I:=0
while node<>nil do
begin
I:=i+node.index+1;
node:=Node.parent;
end;
ShowMessage(IntToStr(I));
在不会再说吧 hehe^^ 不是我不帮你哦 是……是……哎,你总要自己研究研究吧
一个SQL就搞定了!!!!
给分给分!!!!!!!!!!!不给就不帮了!!! hehe^^
怎么请??在网上??nonono
源程序不能给你是肯定的!!(为了公司)
但是按我的思路开发,一定没有问题!!(我们以做出来了)
先自己做吧,到了关键时候我一定帮你!(为了你这个从来不知道的朋友)
还有就是:我没有多少时间(现在也在做我们的程序在加班…忙!),只是我们上网方便(公司
一天24小时都在网上),上班时老板看见我们上网就要……(恐怖画面请自行想像…)
你可以和我E联系,我的是[email protected],先说了我可没有多少时间的哦!!!!!!
是VB、VFP不能比的,这点是没的说,好我去看看
到 猪哥的网站下一控件包吧,是EXPRESSQUANTUMGRID 中的dbtreeview网址忘了, 只记得’男儿有志当凌云‘的口号了,查一下了
你定义一个记录类型的指针,记录一个 ID,
type
Mycord=Record
begin
id:integer;
...
end;
pMyRecord=^Myrecord;
然后通过 Node.Data 和 pMyrecord 联系起来,
pMyrecord.ID 和数据库中的记录联系起来,不就等于
每一个 node 对应一条记录。