我想用treeview作为数据库的索引,除了用节点的text作条件查询外,还有别的办法马??

harabi 2003-08-20 04:19:41
我现在的方式是:
procedure TZmain.TreeView2Click(Sender: TObject);
begin
if treeview2.Selected.Level = 0 then
begin
zlink.ADOQueryMYB.SQL.Clear;
zlink.ADOQueryMYB.SQL.Text:='select * from bulletin where title ='+''''+treeview2.Selected.Text+'''';
zlink.ADOQueryMYB.Open;
end;

zmain.FlatEdit1.Text:=zlink.ADOQueryMYB.FieldByName('title').AsString;

end;
但是title 有很多是相同的,怎办??
...全文
60 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
soldier7451 2003-08-27
  • 打赏
  • 举报
回复
mark
harabi 2003-08-21
  • 打赏
  • 举报
回复
我用的是tiexinliu(铁心刘) 的方法
很好
各位看看有没有什么缺点
没有就结贴了
ZyxIp 2003-08-20
  • 打赏
  • 举报
回复
创建一个节点信息类

TMyNodeInfo=Class
ID:Integer;
Caption:Integer;
.........
end;

给每个TreeView节点DATA创建一个。
lean77 2003-08-20
  • 打赏
  • 举报
回复
我的方法是建一个结构,用构建的一个属性存储id
Spqk005 2003-08-20
  • 打赏
  • 举报
回复
那就用一下数组吧
harabi 2003-08-20
  • 打赏
  • 举报
回复
只是我从未用过数组,
harabi 2003-08-20
  • 打赏
  • 举报
回复
我用一个数组来保存记录的维一的关键字,然后把指针付给data
各位看看如何
Spqk005 2003-08-20
  • 打赏
  • 举报
回复
当然是动态的了
harabi 2003-08-20
  • 打赏
  • 举报
回复
我的treeview是动态生成
Spqk005 2003-08-20
  • 打赏
  • 举报
回复
例子
type
TNodInfo=Class
NodNO:integer;
NodName:String;
end;

NodName:String;这个放文本
NodNO:integer;这个放数据
实例的地址给DATA



wzf54 2003-08-20
  • 打赏
  • 举报
回复
把唯一的字段和要显示的字段邦定在一起显示,中间添加分隔符不就可以了
IwantFlay 2003-08-20
  • 打赏
  • 举报
回复
data属性
harabi 2003-08-20
  • 打赏
  • 举报
回复
Spqk005的方法应该不错
可是我不会
tiexinliu 2003-08-20
  • 打赏
  • 举报
回复
嗨,这个问题被问烂了,可以用节点的data属性,存储该节点的唯一id,具体实现:自己写的程序中的一段,参考一下吧
type
pstr=^string;
Tmainfrm = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
ClientDataSet2: TClientDataSet;
DataSource2: TDataSource;
pnl_back: TPanel;
pnl_hand: TPanel;
Label2: TLabel;
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn2: TBitBtn;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
pnl_data: TPanel;
DBGrid2: TDBGrid;
pnl_left: TPanel;
TreeView1: TTreeView;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
pnl_top_main: TPanel;
lb_caption2: TLabel;
lb_caption: TLabel;
pnl_color: TPanel;
pnl_color2: TPanel;
pnl_color3: TPanel;
ClientDataSet3: TClientDataSet;
ClientDataSet4: TClientDataSet;
Splitter2: TSplitter;
Splitter1: TSplitter;
Panel5: TPanel;
MainMenu2: TMainMenu;
N1211: TMenuItem;
M1: TMenuItem;
N1: TMenuItem;
H1: TMenuItem;
Label1: TLabel;
ToolBar1: TToolBar;
ClientDataSet5: TClientDataSet;
SocketConnection1: TSocketConnection;
N2: TMenuItem;
N3: TMenuItem;
DataSource3: TDataSource;
ImageList1: TImageList;
ImageList2: TImageList;
ImageList3: TImageList;
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
procedure TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
private
procedure genallcustomer(var i_level:integer);
function initial:boolean;
{ Private declarations }
public
{ Public declarations }
end;

var
mainfrm: Tmainfrm;
cus_str:string;


implementation

uses person;

{$R *.dfm}
function Tmainfrm.initial:boolean;
begin
self.DateTimePicker1.DateTime:=now;
self.DateTimePicker2.DateTime:=now;
end;
procedure Tmainfrm.genallcustomer(var i_level:integer);
var
TNode:TTreeNode;
TFistrNode:TTreeNode;
TregionNode:TTreeNode;
I,J:Integer;
Fid,Fregion,Fname:string;
P:pstr;
begin
With self.ClientDataSet3 Do
Begin
Close;
CommandText:='SELECT Customer_Name,Region,Customer_No FROM Customer WHERE Customer_Level=:var1';
Params.ParamByName('var1').Value:='1';
Try
open;
Except
End;
End;
TFistrNode:=self.TreeView1.Items.AddChild(nil,'中鑫公司客户列表');
Fid:='000000';
Fname:='中鑫公司';
new(p);
p^:=Fid;
TregionNode:=self.TreeView1.Items.AddChildObject(TFistrNode,Fname,p);
For I:=0 To self.ClientDataSet3.RecordCount-1 Do
Begin

Fid:=self.ClientDataSet3.Fields[2].Value;
Fregion:=self.ClientDataSet3.Fields[1].Value;
Fname:=self.ClientDataSet3.Fields[0].Value;
new(p);
p^:=Fid;
TregionNode:=self.TreeView1.Items.AddChildObject(TFistrNode,Fname,p);
With self.ClientDataSet4 Do
Begin
Close;
commandtext:='SELECT Customer_Name,Region,Customer_No FROM Customer WHERE Region=:var1 and Customer_Level<>:var2';
Params.ParamByName('var1').Value:=Fregion;
Params.ParamByName('var2').Value:='1';
Try
open;
Except
End;
For J:=0 To self.ClientDataSet4.RecordCount-1 Do
Begin
Fid:=self.ClientDataSet4.Fields[2].Value;
Fname:=self.ClientDataSet4.Fields[0].Value;
new(p);
p^:=Fid;
Tnode:=self.TreeView1.Items.AddChildObject(TregionNode,Fname,p);
self.ClientDataSet4.Next;
End;
End;
self.ClientDataSet3.Next;
End;
self.ClientDataSet4.Close;
self.ClientDataSet3.Close;
//--self.TreeView1.AutoExpand:=true;
end;

procedure Tmainfrm.BitBtn1Click(Sender: TObject);
var
str1,str2:string;
begin
// showmessage(cus_str);
self.BitBtn2.Enabled:=false;
self.ClientDataSet2.Close;
self.ClientDataSet2.CommandText:='exec Query_All_About_End_Seller_my :var1,:var2,:var3,:var4,:var5,:var6,:var7,:var8,:var9';
with self.ClientDataSet2.Params do
begin
ParamByName('var1').Value:='';
ParamByName('var2').Value:='0109';
ParamByName('var3').Value:=cus_str;
ParamByName('var4').Value:='';
ParamByName('var5').Value:=formatdatetime('yyyymmdd',self.DateTimePicker1.Date);
ParamByName('var6').Value:=formatdatetime('yyyymmdd',self.DateTimePicker2.Date);
ParamByName('var7').Value:='0';
ParamByName('var8').Value:=str1;
ParamByName('var9').Value:=str2;
end;
self.ClientDataSet2.Open;
self.DBGrid2.DataSource:=self.DataSource2;
self.BitBtn2.Enabled:=true;
end;

procedure Tmainfrm.FormShow(Sender: TObject);
VAR
fa:integer;
begin
fa:=1;
cus_str:='all';
genallcustomer(fa);
initial;
end;

procedure Tmainfrm.TreeView1Click(Sender: TObject);
var
TTNode:TTreeNode;
begin
TTNode:=self.TreeView1.Selected;
if TTNode.Level=0 then
begin
cus_str:='all';
exit;
end;
cus_str:=Pstr(TTnode.Data)^;
// showmessage(cus_str);
end;

end.

Spqk005 2003-08-20
  • 打赏
  • 举报
回复
用维一的关键字去查呀

把那个字段的内容放成和结点一起的数据,
如放在一个记录类型上
然后把记录指针附给结点的DATA
IORILI 2003-08-20
  • 打赏
  • 举报
回复
如果有相同的话,那用treeview显示,就没有什么意义了吧,那就换显示别的字段的内容

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧