还是关于树结点查询重名的问题,高手进来帮一下忙我出50分!! ( 积分: 5 )

  • 主题发起人 主题发起人 xiaoxiao8372
  • 开始时间 开始时间
X

xiaoxiao8372

Unregistered / Unconfirmed
GUEST, unregistred user!
树中每个子结点都为姓名,单击任一子结点将相关的内容复制到相应地edit中,可是有重名,我的表里有编号(主键),现在就想单击一下找到姓名所对应地编号,我是这么写地! 以下是我的思路(还是别人教地啊)!
type 先定义记录指针
PMyRec = ^TMyRec;
TMyRec = record
id: string;
end;
在按钮中将表中的姓名插到对应结点中,并为
procedure TForm1.FlatSpeedButton1Click(Sender: TObject);
var id,name: string ;
var node,child : TTreenode ;
var
p:PMyRec;
TreeViewIndex,i: Integer;
begin
New(p);
i:=1;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from treetext ');
adoquery1.Active:=true;
child:=treeview1.Items.GetFirstNode;
while not adoquery1.Eof do
begin
p^.id:=adoquery1.FieldByName('id').AsString;
name:=adoquery1.FieldByName('name').AsString;
treeview1.Items.Addchild(child,name);
treeview1.Items.Data:=p;
i:=i+1;
adoquery1.Next;
end;
end;
/////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 5 do
showmessage(PMyRec(treeview1.items.Data)^.id);
end; 这个是调用,想打出每一个结点对应地编号,可是打出来的都是最后一个结点所对应地编号,我是错在那里呢,请高手帮一下忙啊,我都整了好几天了!!
 
树中每个子结点都为姓名,单击任一子结点将相关的内容复制到相应地edit中,可是有重名,我的表里有编号(主键),现在就想单击一下找到姓名所对应地编号,我是这么写地! 以下是我的思路(还是别人教地啊)!
type 先定义记录指针
PMyRec = ^TMyRec;
TMyRec = record
id: string;
end;
在按钮中将表中的姓名插到对应结点中,并为
procedure TForm1.FlatSpeedButton1Click(Sender: TObject);
var id,name: string ;
var node,child : TTreenode ;
var
p:PMyRec;
TreeViewIndex,i: Integer;
begin
New(p);
i:=1;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from treetext ');
adoquery1.Active:=true;
child:=treeview1.Items.GetFirstNode;
while not adoquery1.Eof do
begin
p^.id:=adoquery1.FieldByName('id').AsString;
name:=adoquery1.FieldByName('name').AsString;
treeview1.Items.Addchild(child,name);
treeview1.Items.Data:=p;
i:=i+1;
adoquery1.Next;
end;
end;
/////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 5 do
showmessage(PMyRec(treeview1.items.Data)^.id);
end; 这个是调用,想打出每一个结点对应地编号,可是打出来的都是最后一个结点所对应地编号,我是错在那里呢,请高手帮一下忙啊,我都整了好几天了!!
 
showmessage(PMyRec(treeview1.ItemsIndex)^.id);
 
根本就运行不了,treeview1.ItemsIndex 这个是什么啊,根本就不是指针类型。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, DB, ADODB, Grids, DBGrids;

type
PCLInfo = ^TCLInfo;
TCLInfo = record
LXID: string;
LXName: string;
end;

TForm1 = class(TForm)
TreeView1: TTreeView;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Label1: TLabel;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
procedure TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
node: TTreeNode;
begin
adoquery1.close;

node:= TreeView1.Selected;
if (node = nil) then exit;
with adoquery1 do
begin
close;
sql.text:= 'select * from car_carInfo where ci_lxID= ''' + PCLInfo(node.Data)^.LXID +'''';
open;
end;
end;


procedure TForm1.FormShow(Sender: TObject);
var
father: ttreenode;
lxid: PCLInfo;
begin
father:=nil;
father:=treeview1.Items.AddFirst(father,'车辆类型');
with adoquery2 do
begin
close;
sql.clear;
sql.add('select lx_type, lxid from car_lx');
open;
first;
while not eof do
begin
New(lxid);
lxid^.LXID:= FieldByName('lxid').AsString;
lxid^.LXName:= FieldByName('lx_type').AsString;

treeview1.Items.AddObject(father, lxid^.LXName, lxid);
next;
end;
end;
end;

end.
 
如果您经常上网的话,建议您去注册新闻时报,您注册后点击他们的新闻和和广告,他们就会支付给您报酬。现在我每天看新闻时报的广告,获得的收入跟兼职差不多呢。注册是完全免费的,注册成功后也绝没有任何费用。你只要下载一个看新闻的工具条,上网的时候打开工具条就行了。这样您就可以一边上网,一边获得新闻时报的积分了。您可以到下面的地址去注册http://www.ads4cn.com/newsbar/refferer.asp?jay1717。您放心,这绝对不是社会上的传销那种下线,网站还有我不会收您一分钱的,我只是作为您的介绍人,介绍您加入会获得网站的奖励。以后您也可以这样介绍其他人加入,您也同样可以获得奖励。所以如果您愿意到这个地址注册的话,我就先谢谢您了。
而且您通过我的这个链接注册加入就可以获得88个点的积分奖励。愿意加入吗,请点击
http://www.ads4cn.com/newsbar/refferer.asp?jay1717
另外我觉得应该提醒您的就是您千万不能把看新闻时报的广告作为您的主业,整天都泡在上面,因为通过这个获得的收入很难超过1000元的,除非您能介绍很多朋友加入。所以您最好还是只把这个作为您的一个副业。网上经常有人为了多介绍下线,会吹嘘说收入有多高多高。您千万不要相信。
以后您要是介绍您的亲友加入的话,最好也如实向他们介绍,不要夸大。
 
感谢m191345871,为了我还特意地做了一题啊,感谢万分。。
现在就差一点了,就是播入的这些结点是依次往下插入,都成为根结点了。我想让他们插入到第一个结点,第二个结点······中,成了子结点。。
就差这儿了,请大家帮一下忙啊。
 
后退
顶部