unit XMLexample;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, cxGraphics, cxControls, cxLookAndFeels,
cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, StdCtrls, Buttons,
cxContainer, cxListBox, msxmldom, XMLDoc;
type
TForm1 = class(TForm)
XMLDocument1: TXMLDocument;
lstSource: TcxListBox;
lstTarget: TcxListBox;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Button1: TButton;
cxListBox1: TcxListBox;
cxListBox2: TcxListBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
private
{ Private declarations }
public
procedure MoveUp(A: TcxListBox); //上移
procedure MoveDown(A: TcxListBox); //下移
procedure DeleteItem(A: TcxListBox); //删除
procedure ReLoadItems(A: TcxListBox; const Flag: Integer = 0); //重置
procedure CreateXML(APath:string);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateXML('C:\Documents and Settings\Administrator\桌面\XML');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Node: IXMLNode;
Root: IXMLNode; //根节点
ParentNode: IXMLNode; //首节点
StrDir: string;
xmlDocument: IXMLDocument;
I: Integer;
begin
xmlDocument := TXMLDocument.Create(nil);
StrDir := 'C:\Documents and Settings\Administrator\桌面\XMLConfig.xml';
xmlDocument.XML.LoadFromFile(StrDir);
xmlDocument.Active := true;
Root := xmlDocument.DocumentElement;
//源字段
ParentNode:=Root.ChildNodes.FindNode('FieldsFromSource');
for I := 1 to ParentNode.ChildNodes.Count - 1 do
begin
Node:=ParentNode.ChildNodes[i];
cxListBox1.Items.Add(Node.ChildValues['FieldName']);
end;
//目标字段
ParentNode:=Root.ChildNodes.FindNode('FieldsFromTarget');
for I := 1 to ParentNode.ChildNodes.Count - 1 do
begin
Node:=ParentNode.ChildNodes[i];
cxListBox2.Items.Add(Node.ChildValues['FieldName']);
end;
end;
procedure TForm1.CreateXML(APath: string);
var
xmlDocument: IXMLDocument;
sDir: string;
i:Integer;
begin
xmlDocument := TXMLDocument.Create(nil);
with xmlDocument.XML do
begin
//开始写XML
Add('<?xml version="1.0" encoding="GB2312"?>');
Add('<Config>');
//源字段信息写入XML
if lstSource.Count>0 then
begin
Add('<FieldsFromSource>');
Add('<Number>' + IntToStr(lstSource.Count) + '</Number>');
for I := 0 to lstSource.Count - 1 do
begin
Add('<FieldInfo>');
Add('<Sequence>' + IntToStr(i) + '</Sequence>');
Add('<FieldName>'+ lstSource.Items[i]+'</FieldName>');
Add('<DisplayName_CN>'+ ''+'</DisplayName_CN>');
Add('<DisplayName_EN>'+ ''+'</DisplayName_EN>');
Add('<FieldType>'+ ''+'</FieldType>');
Add('<FieldSize>'+ ''+'</FieldSize>');
Add('</FieldInfo>');
end;
Add('</FieldsFromSource>');
end
else
begin
Add('<FieldsFromSource>');
Add('<Number>0</Number>');
Add('</FieldsFromSource>');
end;
//目标字段写入XML
if lstTarget.Count>0 then
begin
Add('<FieldsFromTarget>');
Add('<Number>' + IntToStr(lstTarget.Count) + '</Number>');
for I := 0 to lstTarget.Count - 1 do
begin
Add('<FieldInfo>');
Add('<Sequence>' + IntToStr(i) + '</Sequence>');
Add('<FieldName>'+ lstTarget.Items[i]+'</FieldName>');
Add('<DisplayName_CN>'+ ''+'</DisplayName_CN>');
Add('<DisplayName_EN>'+ ''+'</DisplayName_EN>');
Add('<FieldType>'+ ''+'</FieldType>');
Add('<FieldSize>'+ ''+'</FieldSize>');
Add('</FieldInfo>');
end;
Add('</FieldsFromTarget>');
end
else
begin
Add('<FieldsFromTarget>');
Add('<Number>0</Number>');
Add('</FieldsFromTarget>');
end;
Add('</Config>');
//XML注释
Add('<!--FieldsFromSource 源字段 -->');
Add('<!--FieldsFromTarget 目标字段 -->');
Add('<!--FieldsInfo 字段信息 -->');
Add('<!--Number 字段数量 -->');
Add('<!--Sequence 序号 -->');
Add('<!--FieldName 字段名称 -->');
Add('<!--DisplayName_CN 中文名称 -->');
Add('<!--DisplayName_EN 英文名称 -->');
Add('<!--FieldType 字段类型 -->');
Add('<!--FieldSize 字段长度 -->');
//XML结束
end;
xmlDocument.Active := True;
sDir := APath;
if not DirectoryExists(sDir) then
begin
if not CreateDir(sDir) then
begin
ShowMessage('创建文件夹失败');
Exit;
end;
end;
xmlDocument.SaveToFile(sDir + 'Config.xml');
end;
procedure TForm1.DeleteItem(A: TcxListBox);
var
_Index: Integer;
begin
with A do
begin
if (Items.Count > 0) and (ItemIndex <> -1) then
begin
_Index := ItemIndex;
Items.Delete(_Index);
end;
end;
end;
procedure TForm1.MoveDown(A: TcxListBox);
var
CurrIndex, LastIndex: Integer;
begin
with A do
begin
CurrIndex := ItemIndex;
LastIndex := Items.Count;
if ItemIndex <> -1 then
begin
if CurrIndex + 1 < LastIndex then
begin
Items.Move(ItemIndex, (CurrIndex + 1));
ItemIndex := CurrIndex + 1;
end;
end;
end;
end;
procedure TForm1.MoveUp(A: TcxListBox);
var
CurrIndex: Integer;
begin
with A do
begin
if ItemIndex > 0 then
begin
CurrIndex := ItemIndex;
Items.Move(ItemIndex, (CurrIndex - 1));
ItemIndex := CurrIndex - 1;
end;
end;
end;
procedure TForm1.ReLoadItems(A: TcxListBox; const Flag: Integer);
begin
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
MoveDown(lstSource);
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
MoveUp(lstSource);
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
DeleteItem(lstSource);
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
MoveDown(lstTarget);
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
MoveUp(lstTarget);
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
DeleteItem(lstTarget);
end;
end.
评论3
最新资源