RightClickSelect = True
RowSelect = True
ShowRoot = False
- TabOrder = 0
+ TabOrder = 2
OnChange = tvwConstChange
OnChanging = tvwConstChanging
end
EdgeBorders = []
Flat = True
Images = imgIcon
- TabOrder = 1
+ TabOrder = 0
object tbtnNewGroup: TToolButton
Left = 0
Top = 0
Height = 111
Align = alBottom
BevelOuter = bvNone
- TabOrder = 2
+ TabOrder = 3
DesignSize = (
260
111)
Top = 0
Width = 260
Height = 81
- ActivePage = tstConst
+ ActivePage = tstMenu
Align = alTop
Style = tsButtons
TabOrder = 0
Height = 20
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
+ OnExit = edtExit
end
object edtMenuIfGhost: TEdit
Left = 76
Height = 20
Anchors = [akLeft, akTop, akRight]
TabOrder = 1
+ OnExit = edtExit
end
end
object tstConst: TTabSheet
Height = 20
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
+ OnExit = edtExit
end
object edtConstScript: TEdit
Left = 76
Width = 177
Height = 20
Anchors = [akLeft, akTop, akRight]
- TabOrder = 1
+ TabOrder = 2
+ OnExit = edtExit
end
object cbxConstShortCut: TComboBox
Left = 76
Height = 20
Anchors = [akLeft, akTop, akRight]
ItemHeight = 12
- TabOrder = 2
+ TabOrder = 1
+ OnExit = edtExit
end
end
end
Height = 27
Align = alTop
BevelOuter = bvNone
- TabOrder = 3
+ TabOrder = 1
DesignSize = (
260
27)
OnChange = cbxConstFileChange
end
end
- object Button1: TButton
- Left = 96
- Top = 192
- Width = 75
- Height = 25
- Caption = 'Button1'
- TabOrder = 4
- OnClick = Button1Click
- end
object imgIcon: TImageList
Left = 224
Top = 64
Hint = #23450#22411#21477#36861#21152
ImageIndex = 2
ShortCut = 45
+ OnExecute = actNewConstExecute
end
object actDelete: TAction
Caption = #21066#38500
Hint = #21066#38500
ImageIndex = 7
- ShortCut = 46
OnExecute = actDeleteExecute
end
object actMoveUp: TAction
OnPopup = PopUpMenuPopup
Left = 160
Top = 64
- object mnInsert: TMenuItem
- Caption = #25407#20837
- ImageIndex = 5
- ShortCut = 13
- end
- object N5: TMenuItem
- Caption = '-'
- end
object mnNewGroup: TMenuItem
Action = actNewGroup
end
object mnAddConst: TMenuItem
Action = actNewConst
end
- object mnEditConst: TMenuItem
- Caption = #23450#22411#21477#32232#38598
- Hint = #23450#22411#21477#32232#38598
- ImageIndex = 1
- end
- object mnDelete: TMenuItem
+ object mnDeleteConst: TMenuItem
Action = actDelete
end
object mnUp: TMenuItem
PopUpMenu: TPopupMenu;
mnNewGroup: TMenuItem;
mnAddConst: TMenuItem;
- mnEditConst: TMenuItem;
- mnDelete: TMenuItem;
mnUp: TMenuItem;
mnDown: TMenuItem;
- mnInsert: TMenuItem;
- N5: TMenuItem;
pnlConstText: TPanel;
pageConstText: TPageControl;
tstMenu: TTabSheet;
pnlConstFile: TPanel;
Label6: TLabel;
cbxConstFile: TComboBox;
- Button1: TButton;
+ mnDeleteConst: TMenuItem;
procedure actDeleteExecute(Sender: TObject);
- procedure actNewGroupExecute(Sender: TObject);
procedure actMoveUpExecute(Sender: TObject);
procedure actMoveDownExecute(Sender: TObject);
procedure tvwConstChange(Sender: TObject; Node: TTreeNode);
procedure btnCloseClick(Sender: TObject);
procedure tvwConstChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
- procedure Button1Click(Sender: TObject);
procedure cbxConstFileChange(Sender: TObject);
+ procedure actNewGroupExecute(Sender: TObject);
+ procedure actNewConstExecute(Sender: TObject);
+ procedure edtExit(Sender: TObject);
private
{ Private \90é\8c¾ }
FTargetConstFile: TScriptConstFile;
tvwConst.OnChanging := tvwConstChanging;
end;
-procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
-begin
- //
-end;
-
procedure TfrmConstEditor.actMoveUpExecute(Sender: TObject);
var Node, DestNode: TTreeNode;
begin
Node := tvwConst.Selected;
+ FTargetConstFile.MoveUp(integer(Node.Data));
if Node.getPrevSibling <> nil then begin
DestNode := Node.getPrevSibling;
Node.MoveTo(DestNode, naInsert);
var Node, DestNode, NextNode: TTreeNode;
begin
Node := tvwConst.Selected;
+ FTargetConstFile.MoveDown(integer(Node.Data));
if Node.getNextSibling <> nil then begin
NextNode := Node.getNextSibling;
NextNode.MoveTo(Node, naInsert);
procedure TfrmConstEditor.UpdateList;
var i, j: integer;
- SelOld, MenuNode, ConstNode: TTreeNode;
+ MenuNode, ConstNode: TTreeNode;
begin
tvwConst.OnChanging := nil;
- SelOld := tvwConst.Selected;
tvwConst.Items.BeginUpdate;
for i := tvwConst.Items.Count-1 downto 0 do begin
tvwConst.Items[i].Delete;
ConstNode.SelectedIndex := 1;
ConstNode.Data := Pointer(FTargetConstFile[i][j].ID);
end;
+ MenuNode.Expand(false);
end;
end;
tvwConst.Items.EndUpdate;
if CanUpdate then begin
ConstData.Caption := edtConstCaption.Text;
ConstData.ConstText := edtConstScript.Text;
+ try
+ ConstData.ShortCut := TextToShortCut(cbxConstShortCut.Text);
+ except
+ ConstData.ShortCut := 0;
+ end;
GetNodeByID(FTargetItemID).Text := ConstData.Caption;
end;
end else begin
end;
end;
-procedure TfrmConstEditor.Button1Click(Sender: TObject);
-begin
- UpdateList;
-end;
-
function TfrmConstEditor.GetNodeByID(ID: integer): TTreeNode;
var i: integer;
begin
UpdateList;
end;
+procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
+var MenuData: TScriptConstMenu;
+ Node: TTreeNode;
+begin
+ MenuData := FTargetConstFile.AddMenu;
+ Node := tvwConst.Items.Add(nil, MenuData.Caption);
+ Node.Data := Pointer(MenuData.ID);
+ Node.Selected := true;
+ edtMenuCaption.SetFocus;
+ edtMenuCaption.SelectAll;
+end;
+
+procedure TfrmConstEditor.actNewConstExecute(Sender: TObject);
+var ConstData: TScriptConst;
+ MenuData: TScriptConstMenu;
+ MenuNode, NewNode: TTreeNode;
+ ID: integer;
+begin
+ if tvwConst.Selected = nil then Exit;
+ if tvwConst.Selected.Level = 0 then MenuNode := tvwConst.Selected
+ else MenuNode := tvwConst.Selected.Parent;
+ ID := integer(MenuNode.Data);
+ MenuData := FTargetConstFile.GetMenuByID(ID);
+ ConstData := MenuData.AddConst;
+ NewNode := tvwConst.Items.AddChild(MenuNode, ConstData.Caption);
+ NewNode.ImageIndex := 1;
+ NewNode.SelectedIndex := 1;
+ NewNode.Data := Pointer(ConstData.ID);
+ NewNode.Selected := true;
+ edtConstCaption.SetFocus;
+ edtConstCaption.SelectAll;
+end;
+
+procedure TfrmConstEditor.edtExit(Sender: TObject);
+var dummy: boolean;
+begin
+ tvwConstChanging(self, nil, dummy);
+end;
+
end.
property ID: integer read FID;
property Count: integer read GetCount;
property Consts[Index: integer]: TScriptConst read GetConsts; default;
+ property List: TObjectList read FConsts;
property Caption: String read FCaption write SetCaption;
property IfGhost: String read FIfGhost write SetIfGhost;
procedure Load(Lines: TStrings);
procedure Save(Lines: TStrings);
procedure Delete(const ID: integer);
+ function GetConstByID(const ID: integer): TScriptConst;
+ function AddConst: TScriptConst;
end;
TScriptConstFile = class(TObject) // \8eq\81BTScriptConstMenu\82Ì\83\8a\83X\83g\81B
property FileName: String read FFileName write SetFileName;
property Count: integer read GetCount;
property Menus[Index: integer]: TScriptConstMenu read GetMenus; default;
+ property List: TObjectList read FMenus;
procedure LoadFromFile(LoadFileName: String);
procedure SaveToFile;
procedure Delete(const ID: integer);
+ procedure MoveUp(const ID: integer);
+ procedure MoveDown(const ID: integer);
+ function GetConstByID(const ID: integer): TScriptConst;
+ function GetMenuByID(const ID: integer): TScriptConstMenu;
+ function AddMenu: TScriptConstMenu;
end;
TScriptConstList = class(TObject) // \90e\81BScriptConstFile\82Ì\83\8a\83X\83g\81B
procedure Save;
property Files[Index: integer]: TScriptConstFile read GetFiles; default;
property Count: integer read GetCount;
+ property List: TObjectList read FFiles;
function GetConstByID(const ID: integer): TScriptConst;
function GetMenuByID(const ID: integer): TScriptConstMenu;
- //procedure MoveUp(const ID: integer);
- //procedure MoveDown(const ID: integer);
procedure Delete(const ID: integer);
end;
end;
function TScriptConstList.GetConstByID(const ID: integer): TScriptConst;
-var i, j, k: integer;
+var i: integer;
begin
Result := nil;
for i := 0 to Count-1 do begin
- for j := 0 to Files[i].Count-1 do begin
- for k := 0 to Files[i][j].Count-1 do begin
- if Files[i][j][k].ID = ID then begin
- Result := Files[i][j][k];
- Exit;
- end;
- end;
- end;
+ Result := Files[i].GetConstByID(ID);
+ if Result <> nil then Exit;
end;
end;
end;
function TScriptConstList.GetMenuByID(const ID: integer): TScriptConstMenu;
-var i, j: integer;
+var i: integer;
begin
Result := nil;
for i := 0 to Count-1 do begin
- for j := 0 to Files[i].Count-1 do begin
- if Files[i][j].ID = ID then begin
- Result := Files[i][j];
- Exit;
- end;
- end;
+ Result := Files[i].GetMenuByID(ID);
+ if Result <> nil then Exit;
end;
end;
{ TScriptConstFile }
+function TScriptConstFile.AddMenu: TScriptConstMenu;
+begin
+ Result := TScriptConstMenu.Create;
+ Result.Caption := '\90V\82µ\82¢\83O\83\8b\81[\83v';
+ Result.IfGhost := '';
+ FMenus.Add(Result);
+end;
+
constructor TScriptConstFile.Create;
begin
FMenus := TObjectList.Create(true);
inherited;
end;
+function TScriptConstFile.GetConstByID(const ID: integer): TScriptConst;
+var i: integer;
+begin
+ Result := nil;
+ for i := 0 to Count-1 do begin
+ Result := Menus[i].GetConstByID(ID);
+ if Result <> nil then Exit;
+ end;
+end;
+
function TScriptConstFile.GetCount: integer;
begin
Result := FMenus.Count;
end;
+function TScriptConstFile.GetMenuByID(const ID: integer): TScriptConstMenu;
+var i: integer;
+begin
+ Result := nil;
+ for i := 0 to Count-1 do
+ if Menus[i].ID = ID then begin
+ Result := Menus[i];
+ Exit;
+ end;
+end;
+
function TScriptConstFile.GetMenus(Index: integer): TScriptConstMenu;
begin
Result := FMenus[Index] as TScriptConstMenu;
FileName := LoadFileName; // \83t\83@\83C\83\8b\96¼\82Í\95Û\91¶\82µ\82Ä\82¨\82
end;
+procedure TScriptConstFile.MoveDown(const ID: integer);
+var i, j: integer;
+ ConstData: TObject;
+begin
+ for i := Count-1 downto 0 do begin
+ if Menus[i].ID = ID then begin
+ if i < Count-1 then FMenus.Move(i, i+1);
+ Exit;
+ end;
+ for j := Menus[i].Count-1 downto 0 do begin
+ if Menus[i][j].ID = ID then begin
+ if j < Menus[i].Count-1 then
+ Menus[i].List.Move(j, j+1) // \95\81\92Ê\82É\83\81\83j\83\85\81[\93à\82Å\88Ú\93®
+ else if i < Count-1 then begin // \83\81\83j\83\85\81[\82ð\92´\82¦\82Ä\88Ú\93®
+ ConstData := Menus[i][j];
+ Menus[i].List.Extract(ConstData);
+ Menus[i+1].List.Insert(0, ConstData);
+ Exit;
+ end;
+ end;
+ end;
+ end;
+end;
+
+procedure TScriptConstFile.MoveUp(const ID: integer);
+var i, j: integer;
+ ConstData: TObject;
+begin
+ for i := 0 to Count-1 do begin
+ if Menus[i].ID = ID then begin
+ if i > 0 then FMenus.Move(i, i-1);
+ Exit;
+ end;
+ for j := 0 to Menus[i].Count-1 do begin
+ if Menus[i][j].ID = ID then begin
+ if j > 0 then
+ Menus[i].List.Move(j, j-1) // \95\81\92Ê\82É\83\81\83j\83\85\81[\93à\82Å\88Ú\93®
+ else if i > 0 then begin // \83\81\83j\83\85\81[\82ð\92´\82¦\82Ä\88Ú\93®
+ ConstData := Menus[i][j];
+ Menus[i].List.Extract(ConstData);
+ Menus[i-1].List.Add(ConstData);
+ Exit;
+ end;
+ end;
+ end;
+ end;
+end;
+
procedure TScriptConstFile.SaveToFile;
var Lines: TStringList;
i: integer;
{ TScriptConstMenu }
+function TScriptConstMenu.AddConst: TScriptConst;
+begin
+ Result := TScriptConst.Create;
+ Result.Caption := '\92è\8c^\8bå';
+ Result.ConstText := '\83X\83N\83\8a\83v\83g';
+ FConsts.Add(Result);
+end;
+
constructor TScriptConstMenu.Create;
begin
FID := OldID + 1;
inherited;
end;
+function TScriptConstMenu.GetConstByID(const ID: integer): TScriptConst;
+var i: integer;
+begin
+ Result := nil;
+ for i := 0 to Count-1 do
+ if Consts[i].ID = ID then begin
+ Result := Consts[i];
+ Exit;
+ end;
+end;
+
function TScriptConstMenu.GetConsts(Index: integer): TScriptConst;
begin
Result := FConsts[Index] as TScriptConst;
try
ConstItem := TScriptConst.Create;
ConstItem.FromString(Lines[0]);
- Lines.Delete(0);
FConsts.Add(ConstItem);
except
ConstItem.Free;
end;
+ Lines.Delete(0);
end else Break;
end;
end;