亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unt_frmmenudesign.pas

?? 一個DELPHI下的菜單構件
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
{*******************************************************}
{                                                       }
{ 應用系統主界面,主菜單動態生成控件.                   }
{ XML文本編輯界面                                       }
{                                                       }
{                                                       }
{                                                       }
{ 版本v1.0                    Copyright (c) 2003 ICSS   }
{*******************************************************}
//修改紀錄: 每次修改 版本號加1
// 修改人   修改日期     修改內容
//
//------------------------------------------------------
unit unt_FrmMenuDesign;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, xmldom, XMLIntf, Grids, ComCtrls, msxmldom, XMLDoc,
  StdCtrls, ImgList, ExtCtrls, Buttons, unt_XMLMenu;

type
  TFrmMenuDesign = class(TForm)
    TrvMenu: TTreeView;
    PopupMenu1: TPopupMenu;
    StrGrdInspector: TStringGrid;
    CmbAutoCheck: TComboBox;
    CmbBreak: TComboBox;
    CmbShortCut: TComboBox;
    CmbAutoHotkeys: TComboBox;
    N1: TMenuItem;
    I1: TMenuItem;
    Sub1: TMenuItem;
    Delete1: TMenuItem;
    N4: TMenuItem;
    Preview1: TMenuItem;
    Save1: TMenuItem;
    Open1: TMenuItem;
    N5: TMenuItem;
    N2: TMenuItem;
    Exit1: TMenuItem;
    ImageList1: TImageList;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    N3: TMenuItem;
    TempXMLDoc: TXMLDocument;
    CmbImageIndex: TComboBoxEx;
    CmbEvntParam: TComboBox;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SbtnInsert: TSpeedButton;
    SbtnSub: TSpeedButton;
    SbtnDelete: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SbtnSaveMod: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    SpeedButton10: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure StrGrdInspectorSelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    procedure CmbAutoCheckExit(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TrvMenuChange(Sender: TObject; Node: TTreeNode);
    procedure TrvMenuMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure N1Click(Sender: TObject);
    procedure I1Click(Sender: TObject);
    procedure Sub1Click(Sender: TObject);
    procedure Delete1Click(Sender: TObject);
    procedure Preview1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure SbtnSaveModClick(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure TrvMenuDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TrvMenuDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TrvMenuKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure CmbImageIndexExit(Sender: TObject);
    procedure CmbImageIndexChange(Sender: TObject);
    procedure CmbAutoCheckChange(Sender: TObject);
    procedure CmbAutoCheckDblClick(Sender: TObject);
    procedure CmbImageIndexDblClick(Sender: TObject);
    procedure StrGrdInspectorSetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    procedure TrvMenuChanging(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    procedure CmbEvntParamChange(Sender: TObject);
    procedure CmbEvntParamDblClick(Sender: TObject);
    procedure CmbEvntParamExit(Sender: TObject);
  private
    { Private declarations }
    isModifed: Boolean;
    isEdited: Boolean;
    procedure InitNewItem;                 //初始化新的節點
    procedure InitView;                    //初始化顯示
    procedure FreePMNData;                 //釋放指針
    procedure PMNData2View(pData: PMNData);//記錄體屬性顯示
    procedure View2PMNData(pData: PMNData);//屬性記入記錄體
    function ExamShortCut: Boolean;        //查找有無重復注冊的快捷鍵
    function DeleteNode(pNode: TTreeNode): Boolean; //刪除節點
    procedure RefreshXMLDoc(pXMLDoc: TXMLDocument); //更新XML文件
    function InitXMLMenu(RootName: string = ''): TTreeNode;   //新建初始化XMLMenu
    procedure XML2Tree(CurItem: TTreeNode; FXMLDoc: TXMLDocument);
    procedure DynamicTreeNode(CurItem: TTreeNode; CurNode: IXMLNode);
    procedure InitImageList;
    procedure OpenXMLMenuFile(pXMLFile: string);
  public
    { Public declarations }
    CurXMLFile: string;
  end;

var
  FrmMenuDesign: TFrmMenuDesign;

implementation

uses unt_FrmPreview, RegMenuDesign;

{$R *.dfm}

procedure TFrmMenuDesign.InitNewItem;
begin
  with StrGrdInspector do
  begin
    Cells[1, 0] := 'False';
    Cells[1, 1] := 'maParent';
    Cells[1, 2] := 'maParent';
    Cells[1, 3] := 'mbNone';
    Cells[1, 4] := '新菜單項';
    Cells[1, 5] := 'False';
    Cells[1, 6] := 'False';
    Cells[1, 7] := 'True';
    Cells[1, 8] := '0';
    Cells[1, 9] := '0';
    Cells[1, 10]:= '';
    Cells[1, 11]:= '-1';
    Cells[1, 12]:= 'False';
    Cells[1, 13]:= '(None)';
    Cells[1, 14]:= '-1';
    Cells[1, 15]:= 'True';
  end;
end;

procedure TFrmMenuDesign.InitView;
begin
  CmbAutoCheck.Visible := False;
  CmbAutoHotkeys.Visible := False;
  CmbBreak.Visible := False;
  CmbShortCut.Visible := False;
  CmbImageIndex.Visible := False;
end;

procedure TFrmMenuDesign.FreePMNData;
var
  I: Integer;
begin
  for I := 0 to TrvMenu.Items.Count - 1 do
  begin
    try
      Dispose(PMNData(TrvMenu.Items[I].Data));
    except
    end;
  end;
end;

procedure TFrmMenuDesign.PMNData2View(pData: PMNData);
begin
  with pData^, StrGrdInspector do
  begin
    Cells[1, 0] := mAutoCheck;
    Cells[1, 1] := mAutoHotkeys;
    Cells[1, 2] := mAutoLineReduction;
    Cells[1, 3] := mBreak;
    Cells[1, 4] := mCaption;
    Cells[1, 5] := mChecked;
    Cells[1, 6] := mDefault;
    Cells[1, 7] := mEnabled;
    Cells[1, 8] := mGroupIndex;
    Cells[1, 9] := mHelpContext;
    Cells[1, 10]:= mHint;
    Cells[1, 11]:= mImageIndex;
    Cells[1, 12]:= mRadioItem;
    Cells[1, 13]:= mShortCut;
    Cells[1, 14]:= mTag;
    Cells[1, 15]:= mVisible;

    //wangji 20030901
    Cells[1, 16]:= mMenuID;
  end;
end;

procedure TFrmMenuDesign.View2PMNData(pData: PMNData);
begin
  with pData^, StrGrdInspector do
  begin
    mAutoCheck        := Cells[1, 0];
    mAutoHotkeys      := Cells[1, 1];
    mAutoLineReduction:= Cells[1, 2];
    mBreak            := Cells[1, 3];
    mCaption          := Cells[1, 4];
    mChecked          := Cells[1, 5];
    mDefault          := Cells[1, 6];
    mEnabled          := Cells[1, 7];
    mGroupIndex       := Cells[1, 8];
    mHelpContext      := Cells[1, 9];
    mHint             := Cells[1, 10];
    mImageIndex       := Cells[1, 11];
    mRadioItem        := Cells[1, 12];
    mShortCut         := Cells[1, 13];
    mTag              := Cells[1, 14];
    mVisible          := Cells[1, 15];

    //wangji 20030901
    mMenuID           := Cells[1, 16];
  end;
end;

function TFrmMenuDesign.ExamShortCut: Boolean;  //查找有無重復注冊的快捷鍵
var
  I: Integer;
  TempShortCut: string;
begin
  Result := False;
  TempShortCut := StrGrdInspector.Cells[1, 13];
  for I := 0 to TrvMenu.Items.Count - 1 do
    if (TempShortCut <> '(None)') and (TempShortCut = PMNData(TrvMenu.Items[I].Data).mShortCut) then
    begin
      MessageDlg('注冊快捷鍵沖突,請更換快捷鍵', mtInformation, [mbOK], 0);
      Result := True;
      Break;
    end;
end;

function TFrmMenuDesign.DeleteNode(pNode: TTreeNode): Boolean;
var
  i: Integer;
begin
  Result := True;
  if pNode = nil then Exit;
  if pNode.HasChildren then
  begin
    for i := 0 to pNode.Count - 1 do
    begin
      Result := DeleteNode(pNode.Item[i]);
      if not Result then
        Break;
    end;
  end else
    Dispose(PMNData(pNode.Data)); //釋放選中節點的指針
end;

procedure TFrmMenuDesign.RefreshXMLDoc(pXMLDoc: TXMLDocument);
var
  ConfigNode, RootNode: IXMLNode; //臨時使用的XML節點
  i: Integer;
  CurNode: TTreeNode;
  procedure ChildNode2XML(pTrvNode: TTreeNode; pXMLNode: IXMLNode);
  var
    ItemNode: IXMLNode;
    TempNode: TTreeNode;
    j: Integer;
  begin
    for j := 0 to pTrvNode.Count - 1 do
    begin
      ItemNode := pXMLNode.AddChild(MyMenuItem);
      TempNode := pTrvNode.Item[j];
      with ItemNode, PMNData(TempNode.Data)^ do
      begin
        Attributes[menuAutoCheck        ] := mAutoCheck        ;
        Attributes[menuAutoHotkeys      ] := mAutoHotkeys      ;
        Attributes[menuAutoLineReduction] := mAutoLineReduction;
        Attributes[menuBreak            ] := mBreak            ;
        Attributes[menuCaption          ] := mCaption          ;
        Attributes[menuChecked          ] := mChecked          ;
        Attributes[menuDefault          ] := mDefault          ;
        Attributes[menuEnabled          ] := mEnabled          ;
        Attributes[menuGroupIndex       ] := mGroupIndex       ;
        Attributes[menuHelpContext      ] := mHelpContext      ;
        Attributes[menuHint             ] := mHint             ;
        Attributes[menuImageIndex       ] := mImageIndex       ;
        Attributes[menuRadioItem        ] := mRadioItem        ;
        Attributes[menuShortCut         ] := mShortCut         ;
        Attributes[menuTag              ] := mTag              ;
        Attributes[menuVisible          ] := mVisible          ;

        //wangji 20030901
        Attributes[menuMenuID           ] := mMenuID           ;
      end;
      if TempNode.HasChildren then
        ChildNode2XML(TempNode, ItemNode);
    end;
  end;
begin
  with pXMLDoc do
  begin
    Active := False;
    XML.Clear;
    XML.Append('<?xml version="1.0" encoding="GB2312"?>');
    XML.Append('<MenuConfig>');
    XML.Append('</MenuConfig>');
    Active := True;
    ConfigNode := DocumentElement;
    if TrvMenu.Items[0] = nil then Exit;

    for i := 0 to TrvMenu.Items[0].Count - 1 do
    begin
      RootNode := ConfigNode.AddChild(MyMenu);
      CurNode := TrvMenu.Items[0].Item[i];
      with RootNode, PMNData(CurNode.Data)^ do
      begin
        Attributes[menuAutoCheck        ] := mAutoCheck        ;
        Attributes[menuAutoHotkeys      ] := mAutoHotkeys      ;
        Attributes[menuAutoLineReduction] := mAutoLineReduction;
        Attributes[menuBreak            ] := mBreak            ;
        Attributes[menuCaption          ] := mCaption          ;
        Attributes[menuChecked          ] := mChecked          ;
        Attributes[menuDefault          ] := mDefault          ;
        Attributes[menuEnabled          ] := mEnabled          ;
        Attributes[menuGroupIndex       ] := mGroupIndex       ;
        Attributes[menuHelpContext      ] := mHelpContext      ;
        Attributes[menuHint             ] := mHint             ;
        Attributes[menuImageIndex       ] := mImageIndex       ;
        Attributes[menuRadioItem        ] := mRadioItem        ;
        Attributes[menuShortCut         ] := mShortCut         ;
        Attributes[menuTag              ] := mTag              ;
        Attributes[menuVisible          ] := mVisible          ;

        //wangji 20030901
        Attributes[menuMenuID           ] := mMenuID           ;
      end;

      if CurNode.HasChildren then
        ChildNode2XML(CurNode, RootNode);
    end;
  end;
end;

function TFrmMenuDesign.InitXMLMenu(RootName: string = ''): TTreeNode;
var
  P_Node: PMNData;
begin
  with TrvMenu.Items do
  begin
    BeginUpdate;
    Clear;
    New(P_Node);
    CurXMLFile := RootName;
    if RootName = '' then
      RootName := '新菜單文件'
    else
      RootName := ExtractFileName(RootName);
    StrGrdInspector.Cells[1, 4] := RootName;
    View2PMNData(P_Node);
    Result := AddChildObject(nil, P_Node.mCaption, P_Node);
    Result.Selected := True;
    EndUpdate;
  end;
end;

procedure TFrmMenuDesign.XML2Tree(CurItem: TTreeNode; FXMLDoc: TXMLDocument);
var
  i: Integer;
  TempNode: TTreeNode;
  MyNode, MenuNode: IXMLNode;//臨時使用的XML節點
  CurP: PMNData;
begin
  if not FXMLDoc.Active then FXMLDoc.Active := True; //開啟菜單XML文件
  MyNode := FXMLDoc.DocumentElement; //獲得菜單XML文件的節點元素
  if (not MyNode.HasChildNodes) or (MyNode.NodeType <> ntElement) then Exit;

  for i := 0 to MyNode.ChildNodes.Count - 1 do
  begin
    if (MyNode.ChildNodes[i].NodeType = ntElement) and
      (UpperCase(MyNode.ChildNodes[i].NodeName) = UpperCase(MyMenu)) then
    begin
      MenuNode := MyNode.ChildNodes[i];   //獲取當前節點信息
      New(CurP);
      with CurP^, MenuNode do
      begin
        try
          mAutoCheck := Attributes[menuAutoCheck];
        except
          mAutoCheck := 'False';
        end;
        try
          mAutoHotkeys := Attributes[menuAutoHotkeys];
        except
          mAutoHotkeys := 'maParent';
        end;
        try
          mAutoLineReduction:= Attributes[menuAutoLineReduction];
        except
          mAutoLineReduction := 'maParent';
        end;
        try
          mBreak := Attributes[menuBreak];
        except
          mBreak := 'mbNone';
        end;
        try
          mCaption := Attributes[menuCaption];
        except
          mCaption := '新菜單項';
        end;
        try
          mChecked := Attributes[menuChecked];
        except

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩av一区| 国产精品色眯眯| 精品va天堂亚洲国产| 久久久影视传媒| 夜夜爽夜夜爽精品视频| 国产九色sp调教91| 欧美日本高清视频在线观看| 国产亚洲精品中文字幕| 手机精品视频在线观看| 91影院在线观看| 精品国产乱码91久久久久久网站| 亚洲激情网站免费观看| 国产高清不卡二三区| 777欧美精品| 国产精品成人在线观看| 九一久久久久久| 91精品国产高清一区二区三区| 中文字幕在线一区免费| 国产美女在线精品| 欧美成人r级一区二区三区| 欧美xxxx在线观看| 亚洲精品在线观| 亚洲精品国产精品乱码不99 | 国产成人免费在线观看不卡| 欧美四级电影在线观看| 中文字幕av一区二区三区免费看| 免费在线看一区| 欧美区视频在线观看| 亚洲日本va午夜在线电影| 国产a区久久久| 2020国产成人综合网| 免费欧美在线视频| 日韩视频一区在线观看| 午夜欧美电影在线观看| 欧美三级一区二区| 亚洲网友自拍偷拍| 欧美日韩在线不卡| 亚洲成人高清在线| 国产精品99久久久久久似苏梦涵 | 国产情人综合久久777777| 九九久久精品视频| 精品区一区二区| 国产一区二区三区不卡在线观看| 日韩美女一区二区三区| 久久精工是国产品牌吗| 日韩一区二区免费视频| 奇米精品一区二区三区在线观看一| 欧美日韩精品欧美日韩精品一| 性做久久久久久久免费看| 欧美疯狂性受xxxxx喷水图片| 视频一区二区三区入口| 精品国产乱码久久久久久久| 国产黄色精品网站| 亚洲久草在线视频| 欧美日韩免费视频| 久久99精品久久久久婷婷| 久久奇米777| 色哟哟一区二区| 爽好多水快深点欧美视频| 欧美v国产在线一区二区三区| 91蝌蚪porny九色| 精品99一区二区| 国产不卡视频在线观看| 中文字幕日韩一区| 欧美中文字幕一区二区三区| 亚洲成人av电影在线| 日韩一区二区三区视频在线| 国产成人综合视频| 亚洲欧美视频在线观看| 欧美视频在线一区| 国产一区二区三区av电影| 日韩一区在线免费观看| 制服.丝袜.亚洲.中文.综合| 国产露脸91国语对白| 玉米视频成人免费看| 8x8x8国产精品| 成人手机电影网| 日韩中文字幕不卡| 国产精品福利av| 国产区在线观看成人精品| 色综合色综合色综合色综合色综合 | 久久影音资源网| 91麻豆国产福利精品| 午夜私人影院久久久久| 国产夜色精品一区二区av| 在线观看国产一区二区| 国产一区二区不卡老阿姨| 亚洲国产视频网站| 国产精品电影院| 337p粉嫩大胆色噜噜噜噜亚洲 | 久久精品免视看| 欧美精品在线观看播放| 97久久超碰精品国产| 久久精工是国产品牌吗| 亚洲成年人影院| 亚洲精品日韩一| 极品瑜伽女神91| 中文字幕中文字幕一区二区| 日韩丝袜情趣美女图片| 日本韩国欧美在线| 国产成人综合亚洲91猫咪| 免费成人深夜小野草| 亚洲最大色网站| 国产精品久久久久久户外露出 | 狠狠狠色丁香婷婷综合激情| 亚洲国产欧美另类丝袜| 国产精品每日更新在线播放网址| 精品奇米国产一区二区三区| 91精品黄色片免费大全| 欧美日韩五月天| 一本一道波多野结衣一区二区| 国产·精品毛片| 国产福利一区二区三区视频| 国模冰冰炮一区二区| 久久99精品视频| 精品在线播放免费| 国内偷窥港台综合视频在线播放| 视频一区国产视频| 日本免费新一区视频| 日韩二区在线观看| 免费看欧美美女黄的网站| 亚洲欧美日韩久久| 日韩丝袜情趣美女图片| 欧美视频精品在线观看| av日韩在线网站| 99视频一区二区| 成a人片亚洲日本久久| 成+人+亚洲+综合天堂| 成人高清在线视频| 色偷偷久久人人79超碰人人澡| av资源网一区| 91美女在线看| 欧美日韩一区成人| 日韩精品一区二区三区swag| 欧美大肚乱孕交hd孕妇| 国产亚洲一区二区三区在线观看| 久久亚洲一级片| 国产精品嫩草久久久久| 亚洲免费观看高清| 婷婷综合五月天| 狠狠色综合日日| 91麻豆国产自产在线观看| 欧美亚一区二区| 欧美刺激午夜性久久久久久久| 久久这里只精品最新地址| 国产亚洲一区二区三区在线观看| 欧美绝品在线观看成人午夜影视 | 美女视频黄免费的久久| 国产激情视频一区二区在线观看 | 欧美一区三区二区| 久久精品夜色噜噜亚洲aⅴ| 国产精品剧情在线亚洲| 亚洲18色成人| 国产馆精品极品| 欧美性一级生活| 久久久久久97三级| 亚洲一区二区三区四区的| 激情综合色播激情啊| 91麻豆自制传媒国产之光| 日韩一区二区三区免费看| 国产精品每日更新| 七七婷婷婷婷精品国产| 99久久精品费精品国产一区二区| 7777女厕盗摄久久久| 中文字幕一区二区三区四区| 免费精品视频在线| 色综合久久66| 国产亲近乱来精品视频| 日本在线不卡视频| 91色乱码一区二区三区| 亚洲精品一线二线三线| 亚洲综合丁香婷婷六月香| 国产精品白丝av| 日韩欧美国产精品一区| 亚洲综合色丁香婷婷六月图片| 国产福利91精品一区二区三区| 欧美裸体一区二区三区| 亚洲婷婷综合久久一本伊一区| 久久国产乱子精品免费女| 欧美色爱综合网| 亚洲日本va午夜在线电影| 国产99精品视频| 久久精品人人做人人综合| 麻豆91在线播放| 91精品国产日韩91久久久久久| 亚洲黄色在线视频| 99久久久国产精品| 中文欧美字幕免费| 国产在线精品免费| 欧美大胆一级视频| 麻豆国产欧美一区二区三区| 欧美三日本三级三级在线播放| 亚洲男女一区二区三区| 97精品国产97久久久久久久久久久久| 欧美大度的电影原声| 国产在线不卡一卡二卡三卡四卡| 欧美一级一区二区| 日本在线不卡视频一二三区| 91精品欧美一区二区三区综合在 | 色哟哟欧美精品|