谢谢
解决方案 »
- TTable 访问问题(oracle database link)
- 师兄们,请问如何判断一个paradox表是否存在某一字段
- 制作闪屏的问题,大家帮忙看看
- IDFTP中可以获取目录的所占空间的大小吗?另外是否可以用FINDFIRST等的文件命令搜索服务器端的文件?(100)
- 控件使用问题
- **三层结构让我很伤心,这可能是MIDAS的大臭虫吧**
- 怎样在一个Corba对象中生成另外一个Corba对象?
- 有个难题..........(在线等待)
- 指针指向的值为什么变了(交换)
- 100分求 tesseract-ocr delphi 怎么调用?
- 经举报发现 tgmgj SQL5560 间存在严重的倒分现象,现作出处理如下:
- 如何用listview实现类资源管理器的功能
begin
//判定数据模块是否已经存在,
sbDemo.SimpleText := ' 正在连接数据库,请稍候...... ';
if not Assigned(dmDemoTree) then
dmDemoTree := TdmDemoTree.create(Application);
// showmessage(BoolToStr(dmDemoTree.dbDBETree.Connected));
if dmDemoTree.dbDBETree.connected = false then
begin
//连接数据库
try
with dmDemoTree.dbDBETree do
begin
DatabaseName := name;
Params.Clear;
Params.Add('USER NAME=Test');
Params.Add('PASSWORD=');
AliasName := 'MyTest';
LoginPrompt := false;
Connected := true; //连接
mem_strDBName := AliasName;
toolbtnBuildTree.Enabled := true;
toolbtnDiscnDB.Enabled := true;
mmOperate_BuildTree.Enabled := true;
mmOperate_DiscnDB.Enabled := true;
end;
Except
on Exception do //错误处理
begin
ShowMessage('连接数据库失败,请检查网络是否通路!');
end;
end;
end;
sbDemo.SimpleText := ' ';
end;procedure TfrmDemoTree.DisConnectDb;
begin
mem_strDBName := ''; //清空数据库名及一些环境设置
toolbtnBuildTree.Enabled := false;
toolbtnDiscnDB.Enabled := false;
mmOperate_BuildTree.Enabled := false;
mmOperate_DiscnDB.Enabled := false;
dmDemoTree.dbDBETree.Connected := false;
end;procedure TfrmDemoTree.ExecQry(mSQL: string; mQry: tquery; mIsSelect: Boolean);
begin
//执行SQL语句
mQry.Close;
mQry.SQL.Clear;
mQry.SQL.Add(mSQL);
mQry.DatabaseName := mem_strDBName;
if mIsSelect then
mQry.Open
else
mQry.ExecSQL;
end;procedure TfrmDemoTree.FormShow(Sender: TObject);
//初始化环境设置
begin
toolbtnBuildTree.Enabled := False;
mmOperate_BuildTree.Enabled := False;
toolbtnDiscnDB.Enabled := false;
mmOperate_DiscnDB.Enabled := false;
end;procedure TfrmDemoTree.toolbtnCnDBClick(Sender: TObject);
begin
ConnectDB;
end;procedure TfrmDemoTree.toolbtnDiscnDBClick(Sender: TObject);
begin
DisConnectDb;
//清空树、ListViwe
if tvDemoTree.Items.Count <> 0 then
tvDemoTree.Items.Clear;
if lvDemoTree.Items.Count <> 0 then
lvDemoTree.Items.Clear;
end;procedure TfrmDemoTree.mmOperate_DiscnDBClick(Sender: TObject);
begin
DisConnectDb;
//清空树、ListViwe
if tvDemoTree.Items.Count <> 0 then
tvDemoTree.Items.Clear;
if lvDemoTree.Items.Count <> 0 then
lvDemoTree.Items.Clear;
end;procedure TfrmDemoTree.mmOperate_CnDBClick(Sender: TObject);
begin
ConnectDB;
end;procedure TfrmDemoTree.BuildTree(mP_TreeNode: TTreeNode; mPid: integer);
//用递归一次性生成所有树节点
var
idTemp:integer;
strSQL:string;
qryTemp:TQuery;
TrNodeTemp:TTreeNode;
begin
TrNodeTemp := mP_TreeNode;
qryTemp := TQuery.Create(self);
try
strSQL := ' select id,name '
+ ' from Tcity '
+ ' where Parentid='+inttostr(mpid);
ExecQry(strSQL,qryTemp,true);
while not qryTemp.Eof do
begin
idTemp := qryTemp.fieldbyname('id').AsInteger;
tvDemoTree.Selected := tvDemoTree.Items.AddChild(TrNodeTemp,qryTemp.fieldbyname('name').AsString);
BuildTree(tvDemoTree.Selected,idTemp);
qryTemp.Next;
end;
finally
qryTemp.Free; //释放资源
end;
end;procedure TfrmDemoTree.InitListView;
//初始化ListView
var
name,strSQL:string;
lvItem:TListItem;
Tempqry:TQuery;
begin
Tempqry := TQuery.Create(self);
try
lvDemoTree.Items.Clear; //清空
name := tvDemoTree.Selected.Text;
strSQL := ' select id '
+ ' from Tcity '
+ ' where name='''+name+'''';
ExecQry(strSQL,dmDemoTree.qryLV,true);
if not dmDemoTree.qryLV.Eof then
begin
strSQL := ' select * '
+ ' from Tcity where parentid='
+ inttostr(dmDemoTree.qryLV.fieldbyname('id').asinteger);
ExecQry(strSQL,dmDemoTree.qryLV,true);
while not dmDemoTree.qryLV.Eof do
begin
lvItem := lvDemoTree.Items.Add;
lvItem.Caption := inttostr(dmDemoTree.qryLV.fieldbyname('id').AsInteger);
lvItem.SubItems.Add(dmDemoTree.qryLV.fieldbyname('name').AsString);
strSQL := ' select name '
+ ' from Tcity '
+ ' where id='
+ inttostr(dmDemoTree.qryLV.fieldbyname('parentid').AsInteger);
ExecQry(strSQL,Tempqry,true);
lvItem.SubItems.Add(Tempqry.fieldbyname('name').AsString);
dmDemoTree.qryLV.Next;
end;
end;
finally
Tempqry.Free;
end;
end;procedure TfrmDemoTree.InitTree;
begin
tvDemoTree.Items.BeginUpdate;
tvDemoTree.Items.Clear;
BuildTree(nil,0);
tvDemoTree.Items.EndUpdate;
end;procedure TfrmDemoTree.mmFile_ExitClick(Sender: TObject);
begin
close;
end;procedure TfrmDemoTree.toolbtnExitClick(Sender: TObject);
begin
close;
end;procedure TfrmDemoTree.tvDemoTreeClick(Sender: TObject);
begin
if tvDemoTree.Items.Count <> 0 then //对数为空进行特殊处理
begin
lvDemoTree.Items.BeginUpdate;
InitListView;
lvDemoTree.Items.EndUpdate;
end;
end;procedure TfrmDemoTree.toolbtnBuildTreeClick(Sender: TObject);
begin
InitTree;
end;procedure TfrmDemoTree.mmOperate_BuildTreeClick(Sender: TObject);
begin
InitTree;
end;procedure TfrmDemoTree.tvDemoTreeMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' This is a TreeView!';
end;procedure TfrmDemoTree.lvDemoTreeMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' This is a ListView!';
end;procedure TfrmDemoTree.toolbtnExitMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' 关闭按钮,退出请点击!';
end;procedure TfrmDemoTree.toolbtnCnDBMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' 连接数据库按钮,需要连接数据库请点击!';
end;procedure TfrmDemoTree.toolbtnDiscnDBMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' 断开数据连接按钮,需要断开数据库请点击!';
end;procedure TfrmDemoTree.toolbtnBuildTreeMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := ' 树生成按钮,需要生成树节点请点击!';
end;procedure TfrmDemoTree.toolbDemoTreeMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
sbDemo.SimpleText := '';
end;procedure TfrmDemoTree.sbDemoMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
sbDemo.SimpleText := '';
end;end.
IsSelect: Boolean);
begin
adoqry.Close;
if adocnTreeTest.Connected = False then
adocnTreeTest.Connected := True;
adoqry.Connection := adocnTreeTest;
adoqry.SQL.Clear;
adoqry.SQL.Add(strSQL);
if IsSelect then
adoqry.Open
else
adoqry.ExecSQL;
end;procedure TfrmTreeTest.BuildTree(P_TreeNode: TTreeNode; Pid: integer);
var
idTemp:integer;
strSQL:string;
adoqryTemp:TADOQuery;
TrNodeTemp:TTreeNode;
begin
TrNodeTemp := P_TreeNode;
adoqryTemp := TADOQuery.Create(self);
try
{ if P_TreeNode = nil then
begin }
strSQL := ' select id,name '
+ ' from Tcity '
+ ' where Parentid='+inttostr(pid);
ExecADOQry(strSQL,adoqryTemp,true);
while not adoqryTemp.Eof do
begin
idTemp := adoqryTemp.fieldbyname('id').AsInteger;
tvTest.Selected := tvTest.Items.AddChild(TrNodeTemp,adoqryTemp.fieldbyname('name').AsString);
BuildTree(tvTest.Selected,idTemp);
adoqryTemp.Next;
end;
finally
adoqryTemp.Free;
end;
end;