XmlEditForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit XmlEditForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, ComCtrls, ToolWin, OleCtrls,
  6.   SHDocVw;
  7. type
  8.   TFormXmlEdit = class(TForm)
  9.     PageControl1: TPageControl;
  10.     TabSheet1: TTabSheet;
  11.     MemoXml: TMemo;
  12.     ToolBar1: TToolBar;
  13.     btnLoad: TToolButton;
  14.     TabSheet5: TTabSheet;
  15.     EditXmlFile: TEdit;
  16.     Label1: TLabel;
  17.     btnSave: TToolButton;
  18.     xmlBar: TStatusBar;
  19.     Label4: TLabel;
  20.     EditFolder: TEdit;
  21.     Label5: TLabel;
  22.     EditBaseFile: TEdit;
  23.     btnUpdate: TButton;
  24.     cbAutoUpdate: TCheckBox;
  25.     TabSheet7: TTabSheet;
  26.     XmlBrowser: TWebBrowser;
  27.     XMLDoc: TXMLDocument;
  28.     ToolButton1: TToolButton;
  29.     procedure btnLoadClick(Sender: TObject);
  30.     procedure btnSaveClick(Sender: TObject);
  31.     procedure MemoXmlChange(Sender: TObject);
  32.     procedure FormCreate(Sender: TObject);
  33.     procedure btnUpdateClick(Sender: TObject);
  34.     procedure EditFolderOrFileChange(Sender: TObject);
  35.     procedure TabSheet7Enter(Sender: TObject);
  36.     procedure MemoXmlKeyUp(Sender: TObject; var Key: Word;
  37.       Shift: TShiftState);
  38.     procedure MemoXmlMouseUp(Sender: TObject; Button: TMouseButton;
  39.       Shift: TShiftState; X, Y: Integer);
  40.   private
  41.     { Private declarations }
  42.   public
  43.     { Public declarations }
  44.   end;
  45. var
  46.   FormXmlEdit: TFormXmlEdit;
  47. implementation
  48. {$R *.DFM}
  49. procedure TFormXmlEdit.btnLoadClick(Sender: TObject);
  50. begin
  51.   // try to load the file
  52.   MemoXml.Lines.LoadFromFile (EditXmlFile.Text);
  53. end;
  54. procedure TFormXmlEdit.btnSaveClick(Sender: TObject);
  55. begin
  56.   // save the file
  57.   MemoXml.Lines.SaveToFile (EditXmlFile.Text);
  58. end;
  59. procedure TFormXmlEdit.MemoXmlChange(Sender: TObject);
  60. var
  61.   eParse: IDOMParseError;
  62. begin
  63.   XmlDoc.Active := True;
  64.   xmlBar.Panels[1].Text := 'OK';
  65.   xmlBar.Panels[2].Text := '';
  66.   (XmlDoc as IXMLDocumentAccess).DOMPersist.loadxml(MemoXml.Text);
  67.   eParse := (XmlDoc.DOMDocument as IDOMParseError);
  68.   if eParse.errorCode <> 0 then
  69.     with eParse do
  70.     begin
  71.       xmlBar.Panels[1].Text := 'Error in: ' + IntToStr (Line) +
  72.         '.' + IntToStr (LinePos);
  73.       xmlBar.Panels[2].Text := SrcText + ': ' + Reason;
  74.     end;
  75. end;
  76. procedure TFormXmlEdit.FormCreate(Sender: TObject);
  77. begin
  78.   EditFolder.Text := ExtractFilePath (Application.ExeName);
  79.   btnUpdateClick (self);
  80. end;
  81. procedure TFormXmlEdit.btnUpdateClick(Sender: TObject);
  82. begin
  83.   EditXmlFile.Text := EditFolder.Text +
  84.     EditBaseFile.Text + '.xml';
  85. end;
  86. procedure TFormXmlEdit.EditFolderOrFileChange(Sender: TObject);
  87. begin
  88.   if cbAutoUpdate.Checked then
  89.     btnUpdateClick (self);
  90. end;
  91. procedure TFormXmlEdit.TabSheet7Enter(Sender: TObject);
  92. begin
  93.   XmlBrowser.Navigate (EditXmlFile.Text);
  94. end;
  95. procedure TFormXmlEdit.MemoXmlKeyUp(Sender: TObject; var Key: Word;
  96.   Shift: TShiftState);
  97. begin
  98.   xmlBar.Panels[0].Text :=
  99.     'Pos: ' + IntToStr (MemoXml.CaretPos.Y + 1) +
  100.     '.' + IntToStr (MemoXml.CaretPos.X + 1);
  101. end;
  102. procedure TFormXmlEdit.MemoXmlMouseUp(Sender: TObject;
  103.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  104. begin
  105.   xmlBar.Panels[0].Text :=
  106.     'Pos: ' + IntToStr (MemoXml.CaretPos.Y + 1) +
  107.     '.' + IntToStr (MemoXml.CaretPos.X + 1);
  108. end;
  109. end.