6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, ExtCtrls, ComCtrls, ActnList, IniFiles,
8 GikoSystem, ToolBarUtil;
11 TGikoToolType = (gttStandard, gttList, gttBrowser);
16 FButtonActionList: TList;
17 FToolType: TGikoToolType;
20 destructor Destroy; override;
21 property ToolBar: TToolBar read FToolBar write FToolBar;
22 property ButtonActionList: TList read FButtonActionList write FButtonActionList;
23 property ToolType: TGikoToolType read FToolType write FToolType;
26 TToolBarSettingDialog = class(TForm)
28 AllListView: TListView;
30 RemoveButton: TButton;
31 CurrentListView: TListView;
36 CancelButton: TButton;
39 ToolBarComboBox: TComboBox;
40 SeparatorAddButton: TButton;
42 procedure FormCreate(Sender: TObject);
43 procedure FormDestroy(Sender: TObject);
44 procedure ToolBarComboBoxChange(Sender: TObject);
45 procedure OKButtonClick(Sender: TObject);
46 procedure CurrentListViewData(Sender: TObject; Item: TListItem);
47 procedure AllListViewData(Sender: TObject; Item: TListItem);
48 procedure UpButtonClick(Sender: TObject);
49 procedure DownButtonClick(Sender: TObject);
50 procedure ResetButtonClick(Sender: TObject);
51 procedure CurrentListViewChange(Sender: TObject; Item: TListItem;
53 procedure AllListViewChange(Sender: TObject; Item: TListItem;
55 procedure AddButtonClick(Sender: TObject);
56 procedure RemoveButtonClick(Sender: TObject);
57 procedure SeparatorAddButtonClick(Sender: TObject);
58 procedure FormShow(Sender: TObject);
61 FActionList: TActionList;
63 FToolBarIndex : Integer; //
\8f\89\8aú
\95\
\8e¦
\82·
\82é
\83c
\81[
\83\8b\83o
\81[
64 procedure CreateListData(ToolBarItem: TToolBarItem);
65 procedure MoveItem(Offset: Integer);
67 function SetDefaultItem(deflist: array of string; ToolBarItem: TToolBarItem): Integer;
70 constructor Create(AOwner: TComponent; ActionList: TActionList); reintroduce; overload; virtual;
71 procedure AddToolBar(ToolBar: TToolBar; ToolType: TGikoToolType);
72 property ToolBarIndex : Integer read FToolBarIndex write FToolBarIndex;
76 ToolBarSettingDialog: TToolBarSettingDialog;
78 function CompareCategory(Item1, Item2: Pointer): Integer;
83 // //
\8bæ
\90Ø
\82è
\95¶
\8e\9a
84 // SEPARATOR_TEXT = '-
\8bæ
\90Ø
\82è -';
91 constructor TToolBarItem.Create;
94 FButtonActionList := TList.Create;
97 destructor TToolBarItem.Destroy;
99 FButtonActionList.Free;
104 // TToolBarSettingDialog
106 constructor TToolBarSettingDialog.Create(AOwner: TComponent; ActionList: TActionList);
108 inherited Create(AOwner);
109 FActionList := ActionList;
112 //
\83t
\83H
\81[
\83\80\8dì
\90¬
113 procedure TToolBarSettingDialog.FormCreate(Sender: TObject);
115 FAllList := TList.Create;
118 //
\83t
\83H
\81[
\83\80\94j
\8aü
119 procedure TToolBarSettingDialog.FormDestroy(Sender: TObject);
124 for i := 0 to ToolBarComboBox.Items.Count - 1 do
125 ToolBarComboBox.Items.Objects[i].Free;
128 //
\95\
\8e¦
\82µ
\82½
\82Æ
\82«
129 procedure TToolBarSettingDialog.FormShow(Sender: TObject);
131 ToolBarComboBox.ItemIndex := FToolBarIndex;
132 ToolBarComboBoxChange(Self);
133 AllListViewChange(Sender, nil, ctState);
134 CurrentListViewChange(Sender, nil, ctState);
137 //
\82±
\82Ì
\83_
\83C
\83A
\83\8d\83O
\82Å
\83J
\83X
\83^
\83}
\83C
\83Y
\82·
\82é
\83c
\81[
\83\8b\83o
\81[
\82ð
\93o
\98^
\82·
\82é
138 procedure TToolBarSettingDialog.AddToolBar(ToolBar: TToolBar; ToolType: TGikoToolType);
140 ToolBarItem: TToolBarItem;
143 ToolBarItem := TToolBarItem.Create;
144 ToolBarItem.ToolBar := ToolBar;
145 ToolBarItem.ToolType := ToolType;
146 for i := 0 to ToolBar.ControlCount - 1 do
147 if ToolBar.Controls[ i ] is TToolButton Then
148 if not (ToolBar.Controls[ i ].Name = 'SelectComboBoxDummy') Then
149 ToolBarITem.ButtonActionList.Add(ToolBar.Controls[i].Action);
150 ToolBarComboBox.Items.AddObject(ToolBar.Caption, ToolBarItem);
154 //
\83R
\83\93\83{
\83{
\83b
\83N
\83X
\95Ï
\8dX
\8e\9e
155 procedure TToolBarSettingDialog.ToolBarComboBoxChange(Sender: TObject);
157 ToolBarItem: TToolBarItem;
159 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
160 CreateListData(ToolBarItem);
161 AllListView.Items.Count := FAllList.Count;
162 CurrentListView.Items.Count := ToolBarItem.ButtonActionList.Count;
165 CurrentListView.Refresh;
168 //OK
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
169 procedure TToolBarSettingDialog.OKButtonClick(Sender: TObject);
173 ToolButton: TToolButton;
174 ToolBarItem: TToolBarItem;
176 for i := 0 to ToolBarComboBox.Items.Count - 1 do begin
177 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[i]);
179 for j := ToolBarItem.ToolBar.ButtonCount - 1 downto 0 do
180 ToolBarItem.ToolBar.Buttons[j].HostDockSite := nil;
182 for j := 0 to ToolBarItem.ButtonActionList.Count - 1 do begin
183 if ToolBarItem.ButtonActionList[j] = nil then begin
184 ToolButton := TToolButton.Create(ToolBarItem.ToolBar);
185 ToolButton.Style := tbsSeparator;
186 ToolButton.Width := 8;
187 ToolButton.Left := 10000;
188 ToolBarItem.ToolBar.InsertControl(ToolButton);
189 end else if TObject(ToolBarItem.ButtonActionList[j]) is TCustomAction then begin
190 ToolButton := TToolButton.Create(ToolBarItem.ToolBar);
191 ToolButton.Action := TCustomAction(ToolBarItem.ButtonActionList[j]);
192 if ToolButton.ImageIndex = -1 then
193 ToolButton.ImageIndex := 51;
195 ToolButton.Left := 10000;
196 SetButtonStyle(ToolBarItem.ButtonActionList[j], ToolButton);
197 ToolBarItem.ToolBar.InsertControl(ToolButton);
203 //
\91S
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\83f
\81[
\83^
\97v
\8b\81\8e\9e
204 procedure TToolBarSettingDialog.AllListViewData(Sender: TObject; Item: TListItem);
206 Action: TCustomAction;
208 if (FAllList.Count <= 0) or (FAllList.Count <= Item.Index) then
210 if FAllList[Item.Index] = nil then begin
211 Item.Caption := SEPARATOR_TEXT;
212 Item.ImageIndex := -1;
214 end else if TObject(FAllList[Item.Index]) is TCustomAction then begin
215 Action := TCustomAction(FAllList[Item.Index]);
216 Item.Caption := Action.Hint;
217 Item.ImageIndex := Action.ImageIndex;
222 //
\8c»
\8dÝ
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\83f
\81[
\83^
\97v
\8b\81\8e\9e
223 procedure TToolBarSettingDialog.CurrentListViewData(Sender: TObject; Item: TListItem);
225 Action: TCustomAction;
226 ToolBarItem: TToolBarItem;
228 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
230 if (ToolBarItem.ButtonActionList.Count <= 0) or (ToolBarItem.ButtonActionList.Count <= Item.Index) then
232 if ToolBarItem.ButtonActionList[Item.Index] = nil then begin
233 Item.Caption := SEPARATOR_TEXT;
234 Item.ImageIndex := -1;
236 end else if TObject(ToolBarItem.ButtonActionList[Item.Index]) is TCustomAction then begin
237 Action := TCustomAction(ToolBarItem.ButtonActionList[Item.Index]);
238 Item.Caption := Action.Hint;
239 Item.ImageIndex := Action.ImageIndex;
244 //
\8eg
\97p
\82Å
\82«
\82é
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82É
\95\
\8e¦
\82·
\82é
\83f
\81[
\83^
\82ð
\8dì
\90¬
245 procedure TToolBarSettingDialog.CreateListData(ToolBarItem: TToolBarItem);
251 for i := 0 to FActionList.ActionCount - 1 do begin
252 if FActionList.Actions[i].Tag = -1 then
254 Category := FActionList.Actions[i].Category;
255 //
\95W
\8f\80\83c
\81[
\83\8b\83o
\81[
\82Í
\81u
\94Â
\81v
\81u
\83X
\83\8c\83b
\83h
\81v
\88È
\8aO
\82Ì
\82Ý
\91Î
\8fÛ
256 if (ToolBarItem.ToolType = gttStandard) and ((Category = '
\94Â') or (Category = '
\83X
\83\8c\83b
\83h')) then
258 //
\83\8a\83X
\83g
\83c
\81[
\83\8b\83o
\81[
\82Í
\81u
\94Â
\81v
\82Ì
\82Ý
\91Î
\8fÛ
259 if (ToolBarItem.ToolType = gttList) and (Category <> '
\94Â') then
261 //
\83u
\83\89\83E
\83U
\83c
\81[
\83\8b\83o
\81[
\82Í
\81u
\83X
\83\8c\83b
\83h
\81v
\82Ì
\82Ý
\91Î
\8fÛ
262 if (ToolBarItem.ToolType = gttBrowser) and (Category <> '
\83X
\83\8c\83b
\83h') then
265 if ToolBarItem.ButtonActionList.IndexOf(FActionList.Actions[i]) = -1 then
266 FAllList.Add(FActionList.Actions[i]);
270 //
\8fã
\82Ö
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
271 procedure TToolBarSettingDialog.UpButtonClick(Sender: TObject);
276 //
\89º
\82Ö
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
277 procedure TToolBarSettingDialog.DownButtonClick(Sender: TObject);
282 //
\83\8a\83Z
\83b
\83g
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
283 procedure TToolBarSettingDialog.ResetButtonClick(Sender: TObject);
285 ToolBarItem: TToolBarItem;
289 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
290 AllListView.Items.Count := 0;
291 CurrentListView.Items.Count := 0;
292 ToolBarItem.ButtonActionList.Clear;
293 case ToolBarComboBox.ItemIndex of
294 0: cnt := SetDefaultItem(DEF_STANDARD, ToolBarItem);
295 1: cnt := SetDefaultItem(DEF_LIST, ToolBarItem);
296 2: cnt := SetDefaultItem(DEF_BROWSER, ToolBarItem);
298 CreateListData(ToolBarItem);
299 AllListView.Items.Count := FAllList.Count;
300 CurrentListView.Items.Count := cnt;
303 CurrentListView.Refresh;
306 function TToolBarSettingDialog.SetDefaultItem(deflist: array of string; ToolBarItem: TToolBarItem): Integer;
309 Action: TCustomAction;
312 for i := 0 to Length(deflist) - 1 do begin
313 if deflist[i] = '' then begin
314 ToolBarItem.ButtonActionList.Add(nil);
317 Action := GetActionItem(FActionList, deflist[i]);
318 if Action <> nil then begin
319 ToolBarItem.ButtonActionList.Add(Action);
326 //
\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\83A
\83C
\83e
\83\80\82ð
\88Ú
\93®
\82·
\82é
327 procedure TToolBarSettingDialog.MoveItem(Offset: Integer);
330 ToolBarItem: TToolBarItem;
332 Item := CurrentListView.Selected;
333 if (Item = nil) or (Item.Index + Offset < 0) then
336 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
337 if Item.Index + Offset >= ToolBarItem.ButtonActionList.Count then
340 ToolBarItem.ButtonActionList.Move(Item.Index, Item.Index + Offset);
341 CurrentListView.ItemIndex := Item.Index + Offset;
342 CurrentListView.Refresh;
345 //
\91S
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\91I
\91ð
\95Ï
\8dX
\8e\9e
346 procedure TToolBarSettingDialog.AllListViewChange(Sender: TObject;
347 Item: TListItem; Change: TItemChange);
349 AddButton.Enabled := not (Item = nil);
352 //
\8c»
\8dÝ
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\91I
\91ð
\95Ï
\8dX
\8e\9e
353 procedure TToolBarSettingDialog.CurrentListViewChange(Sender: TObject;
354 Item: TListItem; Change: TItemChange);
356 UpButton.Enabled := not (Item = nil);
357 DownButton.Enabled := not (Item = nil);
358 RemoveButton.Enabled := not (Item = nil);
361 UpButton.Enabled := Item.Index > 0;
362 DownButton.Enabled := Item.Index < CurrentListView.Items.Count - 1;
365 //
\92Ç
\89Á
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
366 procedure TToolBarSettingDialog.AddButtonClick(Sender: TObject);
369 ToolBarItem: TToolBarItem;
371 Action: TCustomAction;
373 Item := AllListView.Selected;
377 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
379 FAllList.Delete(Item.Index);
380 if Action <> nil then begin
381 Item := CurrentListView.Selected;
383 ToolBarItem.ButtonActionList.Add(Action)
385 ToolBarItem.ButtonActionList.Insert(Item.Index + 1, Action);
386 AllListView.Items.Count := AllListView.Items.Count - 1;
388 CurrentListView.Items.Count := CurrentListView.Items.Count + 1;
389 CurrentListView.Refresh;
393 //
\8dí
\8f\9c\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
394 procedure TToolBarSettingDialog.RemoveButtonClick(Sender: TObject);
396 ToolBarItem: TToolBarItem;
398 Action: TCustomAction;
400 Item := CurrentListView.Selected;
404 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
406 ToolBarItem.ButtonActionList.Delete(Item.Index);
407 if Action <> nil then begin
408 FAllList.Add(Action);
409 AllListView.Items.Count := AllListView.Items.Count + 1;
413 CurrentListView.Items.Count := CurrentListView.Items.Count - 1;
414 CurrentListView.Refresh;
417 //
\8bæ
\90Ø
\82è
\92Ç
\89Á
\83{
\83^
\83\93\89\9f\82µ
\82½
\82Æ
\82«
418 procedure TToolBarSettingDialog.SeparatorAddButtonClick(Sender: TObject);
421 ToolBarItem: TToolBarItem;
423 ToolBarItem := TToolBarItem(ToolBarComboBox.Items.Objects[ToolBarComboBox.ItemIndex]);
424 if CurrentListView.Selected = nil then
425 idx := CurrentListView.Items.Count - 1
427 idx := CurrentListView.Selected.Index;
428 ToolBarItem.ButtonActionList.Insert(idx + 1, nil);
429 CurrentListView.Items.Count := CurrentListView.Items.Count + 1;
430 CurrentListView.Refresh;
433 //
\91S
\83c
\81[
\83\8b\83{
\83^
\83\93\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\83\
\81[
\83g
434 procedure TToolBarSettingDialog.Sort;
436 FAllList.Sort(@CompareCategory);
439 //
\83\
\81[
\83g
\82·
\82é
\82Æ
\82«
\82Ì
\94ä
\8ar
440 function CompareCategory(Item1, Item2: Pointer): Integer;
442 Action1: TCustomAction;
443 Action2: TCustomAction;
445 if (Item1 = nil) and (Item2 = nil) then
447 else if (Item1 = nil) and (Item2 <> nil) then
449 else if (Item1 <> nil) and (Item2 = nil) then
452 if (TObject(Item1) is TCustomAction) and (TObject(Item1) is TCustomAction) then begin
453 Action1 := TCustomAction(Item1);
454 Action2 := TCustomAction(Item2);
455 Result := AnsiCompareStr(Action1.Category + Action1.Caption, Action2.Category + Action2.Caption);