代码如下:procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var node1,node2:TTreeNode;
begin
case Node.Level of
0: begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from dx where 单位= :单位');
params.Items[0].AsString:=treeview1.Selected.Text;
query1.Prepare;
open;
end;
end;
1: begin
node1:=Node.Parent;
Query1.Locate('单位;部门',vararrayof
node1.text,Node.Text]),[]);
end;
2: begin
node2:=Node.Parent;
node1:=node2.Parent;
Query1.Locate('单位;部门;姓名',vararrayof([node1.text,node2.text,Node.Text]),[]);
end;
end;
end;
var node1,node2:TTreeNode;
begin
case Node.Level of
0: begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from dx where 单位= :单位');
params.Items[0].AsString:=treeview1.Selected.Text;
query1.Prepare;
open;
end;
end;
1: begin
node1:=Node.Parent;
Query1.Locate('单位;部门',vararrayof
node1.text,Node.Text]),[]);
end;
2: begin
node2:=Node.Parent;
node1:=node2.Parent;
Query1.Locate('单位;部门;姓名',vararrayof([node1.text,node2.text,Node.Text]),[]);
end;
end;
end;
解决方案 »
- 安装好delphi xe2后在新建ActiveX中看不到ActiveX From等
- delphi中如何让最大化按钮变灰?
- 真么改delphi的工作界面啊,真郁闷
- 我就是lovend,有个问题请教 aiirii(ari-淘金坑) ,
- 小弟初学。下载了一个带源码的系统。程序运行说明如下,我不知道该如何做,请大虾指点!
- 请看一段代码。帮帮忙!急,在线!!!!
- 在DBEdit中控制数字的输入格式
- 100分问题
- 谁有delphi例子的书
- SetWindowsHookEx 中的怪问题!求救!
- 请问:哪有D5企业版下载(200分啊)
- 请问那位朋友会使用ms sql的自定义函数功能,这个功能有用吗,是不是可以使用存储过程代替这功能?
我上次没有写?
如果树结点的话,有点麻烦,你看一看,windows的资源管理器,就知道了
如果是dbgrid的话,我上次的有什么错?
我下去可以再帮你试一试;
谢谢,看来还是要麻烦你了,我给你加分。
是树的结点。其他的朋友如果有兴趣还可以参考 http://www.csdn.net/expert/topic/718/718390.xml?temp=.507641
也就是e不能返回(d,b,b1,b2,b3)c1,c2,c3也不可以,但如e,c1,c2,c3这些结点要依次返回结点d,b,b1,b2,b3时,先单击d根结点,就可以。
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var node1,node2:TTreeNode;
begin
case Node.Level of
0: begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from dx where 单位= :单位');
params.Items[0].AsString:=treeview1.Selected.Text;
query1.Prepare;
open;
end;
end;
1: begin
query1.Close;
query1.Open;
node1:=Node.Parent;
Query1.Locate('单位;部门',vararrayof
node1.text,Node.Text]),[]);
end;
2: begin
node2:=Node.Parent;
node1:=node2.Parent;
query1.Close;
query1.Open;
Query1.Locate('单位;部门;姓名',vararrayof([node1.text,node2.text,Node.Text]),[]);
end;
end;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var node1,node2:TTreeNode;
begin
case Node.Level of
0: begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from dx where 单位= :单位');
params.Items[0].AsString:=treeview1.Selected.Text;
query1.Prepare;
open;
end;
end;
1: begin
query1.Close;
query1.Open;
node1:=Node.Parent;
Query1.Locate('单位;部门',vararrayof
node1.text,Node.Text]),[]);
end;
2: begin
node2:=Node.Parent;
node1:=node2.Parent;
query1.Close;
query1.Open;
Query1.Locate('单位;部门;姓名',vararrayof([node1.text,node2.text,Node.Text]),[]);
end;
end;
end;
也就是e不能返回(d,b,b1,b2,b3)c1,c2,c3也不可以,但如e,c1,c2,c3这些结点要依次返回结点d,b,b1,b2,b3时,先单击d根结点,就可以。
如果单击“+”号的事件和单击“+”旁的节点相同就可以实现其他的朋友如果有兴趣还可以参考 http://www.csdn.net/expert/topic/718/718390.xml?temp=.507641
是什么呢?
又写了什么?
如果不行,就不用locate,每次让其动态的产生
你发在这里也可以
谢谢了
我的信箱是:[email protected]
我已经给您发过去了;
希望您收到可以回复一收;TO deminxh(demi) and shilydream(波波)
我的信箱:
[email protected]
先给一封确认的信和你们的要求;
----------------------------------------------------------------
单击如部门则显示符合本部门全部记录
单击如姓名则显示符合本单位的全部记录
我的要求是显示全部记录(包括符合的,不符合的0,只是单击如部门时,dbgrid指向符合条件的第一条记录上。我也知道locate只可查到一条记录,所以我想先显示全部,再指定在符合条件的一条记录上。
如单击“生产科”dbgrid显示全部记录,只是指向符合“生产科”的第一条记录上
begin
with Query4 do
begin
...//变参只要单位;
end;
end;
Query4.Locate(您的语句);
Level = 1 or Level = 2 只要变一下判断条件就可以了;
如有请留下Email
反正也写了,也不怕再写一次;
[email protected]
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
Node1 ,Node2 :TTreeNode;
begin
case Node.Level of//缩进两格;
0: begin
with Query4 do
begin
Close;
SQL.Clear;
SQL.Add('select * from dx where 单位 = :value1');
Params.Items[0].AsString:=Treeview1.Selected.Text;
Prepare;
Open;
end;
end;
1: begin
Node1 := Node.Parent;
with Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from dx where 单位 = :Value1');
Params.Items[0].AsString := Node1.Text ;
PrePare;
Open;
Query4.Locate('单位;部门',vararrayof([node1.text,Node.Text]),[]);
end;
end;
2: begin
Node2 := Node.Parent;
Node1 := Node2.Parent;
with Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from dx where 单位 = :Value1 ');
Params.Items[0].AsString := Node1.Text ;
PrePare;
Open;
Query4.Locate('单位;部门;姓名',vararrayof([node1.text,node2.text,Node.Text]),[]);
end;
end;
end;
end;
var AllowExpansion: Boolean);
var
Node1 ,Node2 :TTreeNode;
begin
case Node.Level of//缩进两格;
0: begin
with Query4 do
begin
Close;
SQL.Clear;
SQL.Add('select * from dx where 单位 = :value1');
Params.Items[0].AsString:=node.Text;
Prepare;
Open;
end;
end;
1: begin
Node1 := Node.Parent;
with Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from dx where 单位 = :Value1');
Params.Items[0].AsString := Node1.Text ;
PrePare;
Open;
Query4.Locate('单位;部门',vararrayof([node1.text,Node.Text]),[]);
end;
end;
end;end;
这句话甚么用?
请指教
Pamams.Items[0].AsString//query里的第1个参数;
Node1.Text;//selectedNocd -> Parent;父节点的text;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
和procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
代码重复太大,优化一下,怎么用数组
{procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);}是单击“+”所发生的事件,若不加,则单击“+”时dbgrid为空或(active为false)
一个事件中代码重复量也很大,用什么代替一下?
Node: TTreeNode); function TreeNodeFilter(mTreeNode: TTreeNode): string;
begin
Result := '';
while Assigned(mTreeNode) do begin
Result := '<&Replace>' + QuotedStr(mTreeNode.Text) + Result;
mTreeNode := mTreeNode.Parent;
end;
Result := StringReplace(Result, '<&Replace>', '单位 = ', []);
Result := StringReplace(Result, '<&Replace>', ' AND 部门 = ', []);
Result := StringReplace(Result, '<&Replace>', ' AND 姓名 = ', []);
end;begin
ADOTable1.Filter := TreeNodeFilter(TTreeView(Sender).Selected);
ADOTable1.FindFirst;
end;
Node: TTreeNode); function TreeNodeFilter(mTreeNode: TTreeNode): string;
begin
Result := '';
while Assigned(mTreeNode) do begin
Result := '<&Replace>' + QuotedStr(mTreeNode.Text) + Result;
mTreeNode := mTreeNode.Parent;
end;
Result := StringReplace(Result, '<&Replace>', '单位 = ', []);
Result := StringReplace(Result, '<&Replace>', ' AND 部门 = ', []);
Result := StringReplace(Result, '<&Replace>', ' AND 姓名 = ', []);
end;begin
ADOTable1.Filter := TreeNodeFilter(TTreeView(Sender).Selected);
ADOTable1.FindFirst;
end;
你的学生这几天生病了,让我特意转告你,她不能来听你上课了;
SOS!!!!!
Params.Items[0].AsString := Node1.Text ;我剛用treeview做完2層的bbs,沒有你們的複雜...
那你是怎么做的?
很簡單的.我貼在那兒?? 你寫個帖子,我貼上吧.另外我看到了;
回复人: ihihonline(小小->充电中……) ( ) 信誉:92 2002-05-24 13:27:00 得分:0
hehe;
Pamams.Items[0].AsString//query里的第1个参数;
Node1.Text;//selectedNocd -> Parent;父节点的text;
你发在这里也可以
谢谢了
ADO里,没有Params.Items的;
程序里都写着呢,你去收吧,祝你好运;