📄 u_xtwh.pas
字号:
unit u_xtwh;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ADODB, DB, ImgList, ComCtrls, ExtCtrls, StdCtrls, Mask
;//SkinBoxCtrls, SkinCtrls;
type
//自定义一个结构的数据类型
PMyRecord = ^TMyRecord;
TMyRecord = record
ParentNodeID : String; //父节点
NodeID : String; //节点代号
Caption : String; //标题文字
//网址
end;
Txtwh = class(TForm)
ImageList1: TImageList;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOQuery1: TADOQuery;
PopupMenu1: TPopupMenu;
MenuADD: TMenuItem;
renamenode: TMenuItem;
deletechildnode: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
treeview1: TTreeView;
MaskEdit1: TMaskEdit;
procedure MenuADDClick(Sender: TObject);
procedure renamenodeClick(Sender: TObject);
procedure deletechildnodeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CreateSubNodes(myNode :TTreeNode);
procedure Panel2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
xtwh: Txtwh;
implementation
uses u_add,u_ren,u_del,u_zdsl,u_zdy,u_dm;
{$R *.dfm}
procedure Txtwh.MenuADDClick(Sender: TObject);
var
//声明指针变量
MyRecordPointer: PMyRecord;
begin
with Tadd.Create(Application) do begin
try
ShowModal;
finally
//假如用户是单击OK按钮,则将数据加以保存
if ModalResult = mrOK then begin
//创建指针变量
New(MyRecordPointer);
//添加新的节点
with TreeView1.Items.AddChild(TreeView1.Selected,EditCaption.Text) do begin
//指定图片
ImageIndex:= Level + 1;
SelectedIndex := Level + 1;
//指定指针变量的内容
MyRecordPointer.ParentNodeID := PMyRecord(TreeView1.Selected.Data)^.NodeID;
MyRecordPointer.NodeID := PMyRecord(TreeView1.Selected.Data)^.NodeID + '-' + IntToStr(TreeView1.Selected.Count);
MyRecordPointer.Caption := EditCaption.Text;
//设置节点的Data属性值
Data := MyRecordPointer;
end;
//将数据保存到数据库
ADOTable1.Append;
ADOTable1.FieldByName('ParentNodeID').AsString := PMyRecord(TreeView1.Selected.Data)^.NodeID;
ADOTable1.FieldByName('NodeID').AsString := PMyRecord(TreeView1.Selected.Data)^.NodeID + '-' + IntToStr(TreeView1.Selected.Count);
ADOTable1.FieldByName('Caption').AsString := EditCaption.Text;
ADOTable1.Post;
end;
Free;
end;
end;
end;
procedure Txtwh.renamenodeClick(Sender: TObject);
begin
with Tren.Create(Application) do begin
try
ShowModal;//显示对话匡
finally
//假如用户是单击OK按钮,则将数据加以保存
if ModalResult = mrOK then begin
with adoquery1 do
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.add('update myTTreeView set caption=:cc Where caption=:bb');//声名2个变量cc ,bb
parameters.parambyname('bb').value:=treeview1.Selected.Text;
parameters.parambyname('cc').value:=reedit.text ;
adoquery1.execsql;
end;
treeview1.selected.Text:=reedit.Text;
end;
end;
end;
end;
procedure Txtwh.deletechildnodeClick(Sender: TObject);
begin
with Tdel.Create(Application) do begin
try
ShowModal;//显示对话匡
finally
//假如用户是单击yes按钮,则将数据加以保存
if ModalResult = mryes then
begin
//从数据库中删除节点
with adoquery1 do
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.add('delete from myTTreeView Where caption=:aa');//声名一个变量aa
parameters.parambyname('aa').value:=treeview1.Selected.Text;
adoquery1.execsql;
end;
//在treelist 中删除节点
if treeview1.Selected.level<>0 then
treeview1.Items.Delete(treeview1.Selected);
end;
end;
end;
end;
procedure Txtwh.CreateSubNodes(myNode :TTreeNode);
var
//声明指针变量
MyRecordPointer: PMyRecord;
tmpDataSet : TADODataSet;
tmpNode : TTreeNode;
SQLStr : string;
begin
//创建DataSet
tmpDataSet := TADODataSet.Create(nil);
//组合SQL命令,找出指定节点的所有的子节点
SQLStr := ' ParentNodeID = ''' + PMyRecord(myNode.Data)^.NodeID + '''';
//连接数据库
tmpDataSet.Connection :=ADOConnection1;
tmpDataSet.CursorType := ctStatic; //确定ADO数据集所用的游标类型
tmpDataSet.CursorLocation := clUseClient; //确定表在cilent 还是 server.
tmpDataSet.CommandText := 'select * from myTTreeView where ' + SQLStr + ' Order by NodeID ';
tmpDataSet.Active := True;
tmpDataSet.First;
While Not tmpDataSet.Eof do begin
//创建Model Node
tmpNode := TreeView1.Items.AddChild(myNode,tmpDataSet.FieldValues['Caption']);
//设置图片属性
tmpNode.ImageIndex := tmpNode.Level + 1;
tmpNode.SelectedIndex := tmpNode.Level + 1;
//创建指针变量
New(MyRecordPointer);
//将相关数据保存到tmpNode
MyRecordPointer.ParentNodeID := tmpDataSet.FieldValues['ParentNodeID'];
MyRecordPointer.NodeID := tmpDataSet.FieldValues['NodeID'];
MyRecordPointer.Caption := tmpDataSet.FieldValues['Caption'];
tmpNode.Data := MyRecordPointer;
//创建子节点(以递归的方式调用)
CreateSubNodes(tmpNode);
tmpDataSet.Next;
end;
//关闭与释放DataSet
tmpDataSet.Active := False;
tmpDataSet.Free;
end;
//************************************************
//将数据库的内容转到TTreeView对象
//*************************************************
procedure Txtwh.FormCreate(Sender: TObject);
var
//声明指针变量
MyRecordPointer: PMyRecord;
begin
//创建指针变量
New(MyRecordPointer);
//设置根节点的指针变量内容
MyRecordPointer.ParentNodeID := '';
MyRecordPointer.NodeID := 'Root';
MyRecordPointer.Caption := TreeView1.Items[0].Text;
TreeView1.Items[0].Data := MyRecordPointer;
//将数据库的数据写到TTreeView对象中
CreateSubNodes(TreeView1.Items[0]);
end;
//修改系统IP
procedure Txtwh.Panel2Click(Sender: TObject);
var s0:string;
s1,s2,s3,s4:integer;
begin
s0:=maskedit1.text;
s1:=strtoint(copy(s0,1,3));
s2:=strtoint(copy(s0,5,3));
s3:=strtoint(copy(s0,9,3));
s4:=strtoint(copy(s0,13,3));
if maskedit1.text=''then
begin
showmessage('你还没有输入服务器IP地址');
end;
if (s1<1)or(s1>233) then
begin
showmessage(inttostr(s1)+'不是有效数字请输入一介于1和233之间的数值');
end
else
begin
if (s2<0)or(s2>255) then
begin
showmessage(inttostr(s2)+'不是有效数字请输入一介于1和255之间的数值');
end
else
begin
if (s3<0)or(s3>255) then
begin
showmessage(inttostr(s3)+'不是有效数字请输入一介于1和255之间的数值');
end
else
begin
if (s4<0)or(s4>255) then
begin
showmessage(inttostr(s4)+'不是有效数字请输入一介于1和255之间的数值');
end
else
begin
with dm.iptable do
begin
edit;
dm.iptable.fieldbyname('ip').asstring:=inttostr(s1)+'.'+inttostr(s2)+'.'+inttostr(s3)+'.'+inttostr(s4);
post;
end;
fzdsl.clientsocket1.host:=inttostr(s1)+'.'+inttostr(s2)+'.'+inttostr(s3)+'.'+inttostr(s4);
zdy.clientsocket1.host:=inttostr(s1)+'.'+inttostr(s2)+'.'+inttostr(s3)+'.'+inttostr(s4);
showmessage('修改成功');
maskedit1.Text:='';
end ;
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -